mySQL学習入門チュートリアル——5.一般的な高度な操作

4559 ワード

五、mysqlでよく使われる高度な操作
 
一、MySQLテーブルはcreate table t 2 like t 1をコピーする.#テーブル構造をコピーし、t 2はt 1のすべてのテーブル構造insert into t 2 select*from t 1を学習することができる.#テーブルデータをコピーしますが、カラムの対応を考慮していないため、t 1とt 2のテーブル構造が完全に一致しているため、今回の操作でエラーは発生しません.提案:insert into t 3(name)select name from t 1;コピーされた列の指定
二、MySQL索引1、直接作成索引create index index_name on table_name(column_list);#一般インデックス作成create unique index index_name on table_name(colume_list);#一意のインデックスを作成します.一意のインデックスを作成する前に、カラムに重複値がないことを確認してください.そうしないと、作成に失敗します.
2、直接削除索引drop index index_name on table_name;
3、修正-索引alter table table_を作成するname add index [index_name](colum_list);#通常インデックスalter table table_の作成name add unique [index_name](column_list);#一意のインデックスを作成alter table table_name add primary key [index_name](column_list);#indexを追加しない場合は、プライマリ・キー・インデックスを作成します.name、column_を使用リストをデフォルトのインデックス名として使用
4、修正-索引alter table table_を削除するname drop index index_name;#通常/一意インデックスalter table tableを削除_name drop primary key;#プライマリ・キー索引の削除
【推奨使用方法3、4】1、索引の表示:show index from t 1G 2、alter table table_name modify id int not null;(modifyでインデックスを修正したのは調べられませんでしたが、addで修正したようです?)
三、MySQLビュー:一つの条件を通して、一部のデータを一枚の表から抽出し、中間表を形成する.name as select *from table_naem where id > 4 and id <= 10;
3、作成したビューshow tablesを表示する;ビューは中間テーブル3で、ビュー内のデータselect*from view_を表示します.name; #表データの表示と同じ
4、削除ビューdrop view_name;
四、MySQL内蔵関数補足表示関数の作用と簡単な例:function_namee.g.  lcase;
1、文字列関数1)lcase("string")/ucase("string")#を小文字/大文字に変換し、lower(str)/upper(str)と同じ2)length("string")#文字列の長さを返す3)repeat("string",n)#文字をn回4)space(n)から繰り返す#n個のスペースを生成
2、数学関数1)bin(decimal_number)#10進数変換2)ceiling(n)#の作用はceilと同じで、3)sqrt(n)#開平方4)max(col)/min(col)#最大/最小値、集約時に5)rand()#を使用して乱数select*from table_を生成name order by rand(); #rand関数をソート基準として使用する
3、日付関数1)datediff(expr 1,expr 2)#はexpr 1とexpr 2の差の日数を返し、expr 1>expr 2の場合は正の値を返します
 
***********************************************************************************************************************************************
五、MySQL前処理文1、前処理stmtを設定し、whereの判断条件prepare stmt from「select*from table_name where id」;
2、変数set@i=1を設定する.
3、前処理文execute stmt using@iを実行する.
4、前処理指令drop prepare stmtを削除する.
六、MySQL取引【注意】MyISAMストレージエンジンは取引に対してサポートしていない.InnoDBストレージエンジンを使うべきである
set autocommit = 0;              #        
delete from t1 where id > 4;  
savepoint p1;                        #       
delete from t1;  
rollback to p1;                       #   p1     
rollback;                                #            
commit ;                                #          
set autocommit = 1;                #      ,        

七、MySQLストレージ1、ストレージp 1を作成する()
mysql>\d //                             #      //  
mysql>create procedure p1()  
        ->begin  
        ->set @i = 0;  
        ->while @i < 100 do  
        ->insert into t2(name) values(concat("user",@i));  
        ->set @i = @i + 1;  
       ->end while;  
       ->end;//  
mysql>\d ;  

 
2、p 1()call p 1()を実行する.3、procedureのstatus情報show procedure statusGを見る
4、procedurep 1の具体的な情報show create procedure p 1Gを表示する
八、MySQLフリップフロップ1、フリップフロップ作成#t 1というフリップフロップを作成し、t 1テーブルにデータを挿入すると、動作を開始する:t 2テーブルに数を挿入する
mysql>\d //  
mysql>create trigger t1 before inserton t1 for each row  
        ->begin  
        ->insert into t2(name) values(new.name);  
        ->end//  
mysql>\d ;  

 
#フリップフロップt 2を作成し、テーブルt 1がデータを削除するとフリップフロップが開始され、テーブルt 2のデータも削除される
mysql>\d //  
mysql>create trigger t2 before delete on t1 for each row  
       ->begin  
      ->delete from t2 where id =old.id;  
      ->end//  
mysql>\d ;  

 
#フリップフロップt 3を作成し、テーブルt 1を変更すると、t 2のレコードも変更される
mysql>\d //  
mysql>create trigger t3 before update on t1 for each row  
        ->begin  
        ->update t2 set id =new.id where id = old.id;  
        ->end//  
mysql>\d ;  

 
2、トリガdrop trigger trigger_を削除するname;
【添付】テーブル内のすべてのデータを削除する:truncatetable_name; #速度が速く、auto_もクリアできます.incrementリスト
九、再配置auto_increment値MySQLで自動的に増加したIDはどのように回復しますか?1、テーブルを空にするときはdelete from table_を使わないname;代わりに:truncate[table]table_name;
または2、コンテンツをクリアした後、alterコマンドを使用してテーブルalter table table_を直接変更するname auto_increment = 1;
 
http://blog.csdn.net/zjf280441589/article/details/20217647
http://blog.csdn.net/zjf280441589/article/details/20230427