5、mysql整理

4798 ワード

ソースhttps://github.com/TIGERB/easy-tipsみんなに分かち合って
常用sql文
  • を追加
    CREATE TABLE `table_name`(
      ...
      )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
  • 増加記録
  • INSERT INTO `your_table_name`(`column_name`)
    VALUES
    ('your_value_one'),
    ('your_value_two');
    
  • フィールド
  • を追加
    ALTER TABLE `your_table_name`
    ADD `your_column_name` ...
    AFTER `column_name`;
    
  • インデックスの追加
  • プライマリ・キー
  • ALTER TABLE `your_table_name`
    ADD PRIMARY KEY your_index_name(your_column_name);
    
  • ユニークインデックス
  • ALTER TABLE `your_table_name`
    ADD UNIQUE your_index_name(your_column_name);
    
  • 一般インデックス
  • ALTER TABLE `your_table_name`
    ADD INDEX your_index_name(your_column_name);
    
  • 全文インデックス
  • ALTER TABLE `your_table_name`
    ADD FULLTEXT your_index_name(your_column_name);
    
  • 削除
  • 行ごとに削除
  • DELETE FORM `table_name`
    WHERE ...;
    
  • 表全体
  • をクリア
    TRUNCATE TABLE `your_table_name`;
    
  • 削除テーブル
  • DROP TABLE `your_table_name`;
    
  • フィールド
  • を削除
    ALTER TABLE `your_table_name`
    DROP `column_name`;
    
  • 削除インデックス
  • ALTER TABLE `your_table_name`
    DROP INDEX your_index_name(your_column_name);
    
  • 変更データ
  • UPDATE `table_name`
    SET column_name=your_value
    WHERE ...;
    
  • 変更フィールド
  • ALTER TABLE `your_table_name`
    CHANGE `your_column_name` `your_column_name` ...(  );
    
  • フィールド値を別のテーブルの値
  • に変更する.
    UPDATE `your_table_name`
    AS a
    JOIN `your_anther_table_name`
    AS b
    SET a.column = b.anther_column
    WHERE a.id = b.a_id...;
    
  • 調べ
  • 一般クエリー
  • SELECT `column_name_one`, `column_name_two`
    FROM `table_name`;
    
  • 関連クエリー
  • SELECT *
    FROM `your_table_name`
    AS a
    JOIN `your_anther_table_name`
    AS b
    WHERE a.column_name = b.column_name...;
    
  • 合計関数条件照会:WHEREキーワードは合計関数とともに使用できない
  • SELECT aggregate_function(column_name)
    FROM your_table_name
    GROUP BY column_name
    HAVING aggregate_function(column_name)...;
    
  • 同じインスタンスの下でライブラリ間クエリ
  • SELECT *
    FROM database_name.your_table_name
    AS a
    JOIN another_database_name.your_another_table_name
    AS b
    WHERE a.column_name = b.column_name...;
    
  • テーブル構造
  • をコピー
    CREATE TABLE `your_table_name`
    LIKE `destination_table_name`;
    
  • テーブルを完全にコピー:テーブル構造+すべてのデータ
  • CREATE TABLE `your_table_name`
    LIKE `destination_table_name`;
    
    INSERT INTO `your_table_name`
    SELECT *
    FROM `destination_table_name`;
    

    付録:mysql常用コマンド
  • ログイン:mysql-h host-u username-p
  • データベースのリスト:SHOW DATABESES;
  • リスト表:SHOW TABLES;
  • リスト構造:DESC table_name
  • データベースを使用:USE database_name;
  • インポート:source'file;
  • エクスポート:mysqldump-h 127.0.0.1-u root-p「database_name」「table_name」--where=「condition」>file_name.sql;
  • スローログの表示:mysqldumpslow-s[c:記録回数順/t:時間/l:ロック時間/r:返される記録数]-t[n:前のn個のデータ]-g「正規」/path
  • 新規ユーザー:insert into user(Host,User,authentication_string)value('localhost','username',password('pwd'))
  • mysql 5.7新規ユーザー
    //      
    insert into mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject
    value('localhost', 'username', password('password'), '', '', '');
    
    //      
    grant all privileges on dbname.name.* to username@localhost identified by 'password';
    
    //       
    FLUSH PRIVILEGES;
    
  • エンジン
  • InnoDB
  • MyISAM
  • Memory
  • Archive\Blackhole\CSV\Federated\merge\NDB

  • トランザクション独立性レベル
  • READ UNCOMMITTED:未読
  • READ COMMITTED:コミット/再読み取り不可
  • REPEATABLE READ:繰り返し読み取り可能(MYSQLデフォルトトランザクション独立性レベル)
  • SERIALIZEABLE:シリアル化可能
  • インデックス
  • B-Tree
  • ハッシュインデックス
  • 空間データインデックス(R-Tree)
  • 全文インデックス
  • -       
    -     
    -     
    -     
    -     
    -      
    
  • ロック
  • 悲観ロック
  • 楽観ロック
  • -    :
      update table table_name
      set column_name = value, version=version+1
      and
      where version = version;
    -    :update table table_name set column_name = value for update;
    -    :x 
    
    -   :          ,               ;
    -   :               ,                  ,         ;
    -      :             ,              ,                  ;
    -     :          ,            ,       commit            ;
    
  • 分表
  • 垂直分表
  • 水平分表
  • sql最適化
  • マスタスレーブ構成