ホームページ >データベース >mysql チュートリアル >Mysql の基本操作について詳しく学ぶ

Mysql の基本操作について詳しく学ぶ

迷茫
迷茫オリジナル
2017-03-26 13:41:041214ブラウズ

1.テーブルのコピー

1.テーブルhelloの構造をテーブルhello3

Mysql の基本操作について詳しく学ぶにコピーします2.テーブルが2つある場合。構造は同じなので、すべての列のデータをコピーする必要があります

mysql> insert into hello3 select * from hello;

b. 2つのテーブルの構造は異なる場合があり、一部の列のデータのみをコピーする必要があります

mysql> insert into hello3 (name,sex,degree) select name,sex,degree from hello;

2.

インデックス

1. create インデックスを作成します (通常のインデックスと一意のインデックスのみを作成できます)
通常のインデックスを作成します: mysql> createindex in_name on hello(name); name 列に in_name という名前のインデックスを作成します。こんにちはテーブルで。

一意のインデックスを作成します: mysql> create uniqueindex un_name on hello(name); hello テーブルの name 列に un_name という名前の一意のインデックスを作成します。 インデックスの表示: mysql> hello からのインデックスの表示; テーブル hello のインデックスを表示します。

インデックスの削除: mysql> hello テーブルの in_name という名前のインデックスを削除します。

2. alter はインデックスを作成します (インデックスを作成する一般的な方法)

通常のインデックスを作成します: mysql> alter table

hello

addindex in_name(

name

); hello テーブルの列 in_name のインデックス。 (通常/一意の) インデックスの削除: mysql> alter table hellodropindex in_name; hello テーブル内の in_name という名前の通常のインデックスを削除します。 自動インクリメントの削除: mysql> alter table hello edit id int unsigned not null; テーブル hello の id カラム (int 型) の自動インクリメント機能を削除します。 主キーインデックスを削除します: mysql> alter table hello drop PRIMARY KEY;

一意のインデックスを作成します: mysql> alter table hello add unique(name); インデックス名。がデフォルトです。

主キーインデックスの作成: mysql> alter table hello add Primary key(id); hello テーブルの id フィールドの主キーインデックスを作成します。

主キーのインデックスを自動インクリメントに設定します: mysql> alter table hellomodify id int unsigned not null auto_increment; hello テーブルの主キー ID 列を自動インクリメントに設定します。

3. ビュー

メインテーブルのデータが変更されると、それに応じてビューも随時変更されます。ビューが依存するテーブルにエラーがある (削除されている) 場合、ビューにもエラーが発生します。

ビューの作成: mysql> create view v_hello as select * from hello where id >5; ビューの作成プロセスを表示: mysql> v_hello; ; ビュー ビュー v_hello の作成プロセス。

IV.

組み込み関数

文字関数

1. CONCAT(str1,str2,....) 文字リンク関数 select concat('A','B' );

2. LCASE(str1)を小文字に変換します mysql> select lcase("MYSQL");

3. UCASE(str1)を大文字に変換します

select UCASE("Mysql");

4. LENGTH (str) strの長さ

mysql> select length('mysql');

5. LTRIM(Str) は先行するスペースを削除します

select LTRIM('mysql');

6. RTRIM(str) バックエンドスペースを削除します

select RTRIM(' mysql ');

7. REPEAT(str,count) 繰り返し回数

mysql> selectrepeat('mysql',2);

8. REPLACE(str, search_str,replcae_str) strのsearch_strをreplac_strに置き換えます

mysql> select REPLACE('mysql','m','M');

9. SUBSTRING(str,postion,length)から取得str の長さの文字の位置

select substring('mysql',1,2); 10. SPACE(count) は count 個のスペースを生成します

select concat(space(3),'mysql) ') ;

数学関数

1. BIN(10 進数): 10 進数を 2 進数に変換します

2. CEILING(number) 切り上げ mysql> 結果: 11

3、FLOOR(number) 向下取整       mysql> select ceiling(10.12);   结果:10

4、MAX(column) 获取 最大列

5、MIN(column) 获取最小列

6、SQRT(num) 开平方

7、RAND() 返回0-1之间的随机数值  

日期函数

1、CURDATE() 返回当前日期格式 yyyy-MM-dd

2、CURTIME()返回档期时间 12:11:56

3、NOW()返回当前时间 2017-05-12 21:12:34

4、UNIX_TIMESTAMP(date) 返回当前date的时间戳

5、FROM_UNIXTIME()返回UNIX时间戳的日期值

6、WEEK(date)返回当前时间date为一年中的第几周

7、YEAR(data)返回当前时间date的年份

8、DATEDIFF(expr1,expr2) 返回expr1与expr2之间的天数

五、预处理语句

无变量:

创建预处理语句:mysql> prepare stmt1 from 'select * from hello where id>5';创建一个名为stmt1的预处理语句

执行预处理语句:mysql> execute stmt1;执行stmt1预处理语句

带变量:

创建带参数的预处理语句:mysql> prepare stmt1 from 'select * from hello where id>?'

设置变量:mysql> set @i=6;

执行预处理语句:mysql> execute stmt2 using @i;

删除预处理语句:mysql> drop prepare stmt2;    #mysql> DEALLOCATE PREPARE stmt2;  

注意:每一次执行完EXECUTE时,养成好习惯,须执行DEALLOCATE PREPARE … 语句,这样可以释放执行中使用的所有数据库资源(如游标)。
不仅如此,如果一个session的预处理语句过多,可能会达到max_prepared_stmt_count的上限值。

六、事务处理

mysql默认事务是自动提交的。在做mysql事务处理时请将数据库或者表的ENGINE 设置为InnoDB

将表的存储引擎设置为INNODB:mysql> alter table hello engine=innodb;

设置mysql为非自动提交:mysql> set autocommit=0;

产生事务:mysql> delete from hello where id>7;

事务回滚:mysql> rollback;

事务提交:mysql> commit;

关于事务中的还原点:

创建一个事务:mysql> insert into hello (sex,degree,name) values(1,12312.32,'HHH');

对该事务设置还原点:mysql> savepoint p1;

回滚到指定的还原点:mysql> rollback to p1; 此时事务恢复到p1,也就是p1之后的事务p2 ,p3..这些还原点将失效。

回滚到原始的还原点:mysql> rollback;

七、存储过程

<!-- 创建存储过程 hello1()-->
CREATE PROCEDURE hello1()
    BEGIN
        SET @i=0;
        WHILE @i<100 DO 
        insert INTO hello (sex,degree,name) VALUES(1,@i,CONCAT(&#39;name&#39;,@i));
        SET @i=@i+1;
        END WHILE;
    end;
<!-- 查看存储-->
SHOW PROCEDURE STATUS;
<!-- 查看hello1()存储过程-->
show CREATE PROCEDURE hello1;
<!-- 执行存储过程-->
CALL hello1;

八、重排auto_increment值

mysql中我们的主键id如果设置为主键自增策略,那我们如何清空表,并且恢复自增列id的值。

方式一:使用truncate table tableName; 该方式在清空表的同时恢复auto_increment 的值。

方式二:

  1、mysql> delete from hello3;  清空表 (该方式效率较低)

  2、mysql> alter table hello3 auto_increment=1; 恢复auto_increment 的起始值为1

以上がMysql の基本操作について詳しく学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。