ストレージエンジン
データベース操作
テーブル操作
行操作
ストアドプロシージャ
トランザクションの応用と設定(InnoDBエンジン)
インデックス(InnoDBエンジン)
ロックメカニズム
パフォーマンス最適化
ストレージエンジン
SQLクエリはMySQL Serverを通じてストレージエンジンのインターフェースを呼び出し、InnoDB/MyISAMに対応したファイルを操作してデータの物理的な保存・検索・管理を行います。
1. InnoDB: トランザクションをサポートし、行レベルロックを実装
2. MyISAM: トランザクションをサポートせず、テーブルレベルロック
-- サポートされているストレージエンジンの確認
show engines
-- ストレージエンジンの指定
Create table sample_table () engine=myisam/innodb;
インデックスファイル(Btreeアルゴリズムで生成)は、ディスクIO回数を定数レベルに抑えることでクエリ効率を向上させます。
注意点:更新処理の効率は低下する(インデックスファイルの更新が必要)
データベース操作
- データベースの作成
# データベースの作成 create database sample_db; # 存在しない場合のみ作成 create database if not exists sample_db; # 文字コードを指定して作成 create database if not exists sample_db character set utf8mb4; - データベースの表示
# 全データベースの確認 show databases; # 現在使用中のデータベースの確認 select database (); # 特定データベースの文字コードの確認 show create database sample_db; - データベースの変更
# 文字コードの変更 alter database sample_db character set utf8mb4; - データベースの削除
# データベースの削除 drop database sample_db; # 存在する場合のみ削除 drop database if exists sample_db; - データベースの使用
use sample_db;
テーブル操作
- テーブルの確認
# テーブル名の確認 show tables; # テーブル構造の確認 desc sample_table; # テーブル内容の確認 select * from sample_table; - テーブルの作成
# テーブルの作成 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; - テーブルの削除
# テーブルの削除 drop table sample_table; # 存在する場合のみ削除 drop table if exists sample_table; - テーブルの初期化
delete from sample_table truncate table sample_table - テーブルの変更
# テーブル名の変更 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(主キー列);