MySQLの詳細な解説(継続更新中)

ストレージエンジン

データベース操作

テーブル操作

行操作

ストアドプロシージャ

トランザクションの応用と設定(InnoDBエンジン)

インデックス(InnoDBエンジン)

ロックメカニズム

パフォーマンス最適化

ストレージエンジン

SQLクエリはMySQL Serverを通じてストレージエンジンのインターフェースを呼び出し、InnoDB/MyISAMに対応したファイルを操作してデータの物理的な保存・検索・管理を行います。

1. InnoDB: トランザクションをサポートし、行レベルロックを実装
2. MyISAM: トランザクションをサポートせず、テーブルレベルロック

-- サポートされているストレージエンジンの確認
show engines

-- ストレージエンジンの指定
Create table sample_table () engine=myisam/innodb;

インデックスファイル(Btreeアルゴリズムで生成)は、ディスクIO回数を定数レベルに抑えることでクエリ効率を向上させます。

注意点:更新処理の効率は低下する(インデックスファイルの更新が必要)

データベース操作

  1. データベースの作成
    # データベースの作成
    create database sample_db;
    
    # 存在しない場合のみ作成
    create database if not exists sample_db;
    
    # 文字コードを指定して作成
    create database if not exists sample_db character set utf8mb4;
    
  2. データベースの表示
    # 全データベースの確認
    show databases;	
    
    # 現在使用中のデータベースの確認
    select database ();
    
    # 特定データベースの文字コードの確認
    show create database sample_db;
    
  3. データベースの変更
    # 文字コードの変更
    alter database sample_db character set utf8mb4;
    
  4. データベースの削除
    # データベースの削除
    drop database sample_db;	
    
    # 存在する場合のみ削除
    drop database if exists sample_db;
    
  5. データベースの使用
    use sample_db;
    

テーブル操作

  1. テーブルの確認
    # テーブル名の確認
    show tables;		
    
    # テーブル構造の確認
    desc sample_table;			
    
    # テーブル内容の確認
    select * from sample_table;	
    
  2. テーブルの作成
    # テーブルの作成
    create table sample_table(								
    	列名1  INT comment '説明',
    	列名2  VARCHAR(255) comment '説明',
    	列名3  TEXT comment '説明',
    
    	primary key(列名1) using btree,
    	spatial key 'geo_index' (geometry_col),
    	key 'normal_idx' (text_col) using btree 
    ) engine = innodb;
    
    # テーブルのコピー
    create table new_table like sample_table;	
    
  3. テーブルの削除
    # テーブルの削除
    drop table sample_table;				
    
    # 存在する場合のみ削除
    drop table if exists sample_table;	
    
  4. テーブルの初期化
    delete from sample_table
    
    truncate table sample_table
    
  5. テーブルの変更
    # テーブル名の変更
    alter table sample_table rename to new_table;
    
    # 文字コードの変更
    alter table sample_table character set utf8mb4;	
    
    # 列の追加
    alter table sample_table add 新しい列 INT;
    
    # 複数列の追加
    alter table sample_table add (列A VARCHAR(100), 列B DATETIME)
    
    # 列の削除
    alter table sample_table drop 列名;
    
    # 列タイプの変更
    alter table sample_table modify 列名 DECIMAL(10,2);
    
    # 列名とタイプの変更
    alter table sample_table change 列名 新しい列名 DATE;
    
    # 主キーの追加
    alter table sample_table add primary key(主キー列);
    

タグ: MySQL InnoDB SQL インデックス ロック

5月22日 10:42 投稿