MySQL チートシート
検索・印刷できる MySQL のリファレンス — クエリ、結合、インデックス、関数、データ型、管理コマンド。無料。
クエリ
10SELECT * FROM users;
全列・全行を選択
SELECT id, name FROM users;
特定の列を選択
SELECT DISTINCT city FROM users;
一意な値のみ
WHERE age > 18 AND active = 1
条件で行を絞り込み
WHERE name LIKE 'A%'
パターン一致 (% = 任意の文字)
WHERE id IN (1, 2, 3)
集合内のいずれかに一致
WHERE age BETWEEN 18 AND 30
範囲フィルタ (両端含む)
ORDER BY created_at DESC
降順ソート
LIMIT 10 OFFSET 20
結果をページ分割
WHERE email IS NULL
null 値に一致
結合
8INNER JOIN orders ON orders.user_id = users.id
両テーブルで一致する行
LEFT JOIN orders ON ...
左の全行 + 一致
RIGHT JOIN orders ON ...
右の全行 + 一致
CROSS JOIN colors
直積
SELF JOIN: FROM emp e JOIN emp m ON e.mgr = m.id
テーブルを自己結合
USING (user_id)
同名の列で結合
UNION / UNION ALL
結果セットを結合
SELECT u.*, o.total FROM users u JOIN orders o
わかりやすくテーブルに別名
集約
9COUNT(*)
行数を数える
SUM(amount)
数値列の合計
AVG(price)
平均値
MIN(price), MAX(price)
最小値と最大値
GROUP BY country
集約のため行をグループ化
HAVING COUNT(*) > 5
集約グループを絞り込み
GROUP_CONCAT(name)
グループ化した値を連結
COUNT(DISTINCT city)
一意な値を数える
ROW_NUMBER() OVER (ORDER BY id)
ウィンドウ関数による順位付け
データの変更
8INSERT INTO users (name) VALUES ('Sam');
1 行を挿入
INSERT INTO users (name) VALUES ('A'),('B');
複数行を挿入
UPDATE users SET active = 1 WHERE id = 5;
一致する行を更新
DELETE FROM users WHERE id = 5;
一致する行を削除
TRUNCATE TABLE logs;
全行を高速に削除
INSERT ... ON DUPLICATE KEY UPDATE
一意キーで upsert
REPLACE INTO users ...
競合時に削除 + 挿入
INSERT IGNORE INTO ...
エラーになる行をスキップ
スキーマ / DDL
9CREATE TABLE users (id INT PRIMARY KEY);
新しいテーブルを作成
AUTO_INCREMENT
自動採番列
ALTER TABLE users ADD COLUMN age INT;
列を追加
ALTER TABLE users DROP COLUMN age;
列を削除
ALTER TABLE users MODIFY name VARCHAR(100);
列の型を変更
DROP TABLE IF EXISTS users;
テーブルを削除
FOREIGN KEY (user_id) REFERENCES users(id)
別のテーブルを参照
ON DELETE CASCADE
子へ削除をカスケード
CREATE TABLE t2 LIKE t1;
テーブル構造をコピー
インデックスとキー
8PRIMARY KEY (id)
一意な行識別子
UNIQUE (email)
一意な値を強制
CREATE INDEX idx_name ON users (name);
列の検索を高速化
CREATE INDEX idx_ab ON t (a, b);
複合 (複数列) インデックス
DROP INDEX idx_name ON users;
インデックスを削除
FULLTEXT (body)
全文検索インデックス
EXPLAIN SELECT ...;
クエリプランを表示
SHOW INDEX FROM users;
テーブルのインデックス一覧
データ型
9INT, BIGINT, TINYINT
サイズ別の整数型
DECIMAL(10, 2)
正確な固定小数点数
VARCHAR(255)
可変長文字列
TEXT, LONGTEXT
大きなテキストデータ
DATE, DATETIME, TIMESTAMP
日付・時刻型
BOOLEAN (TINYINT(1))
true/false を 0/1 で保存
JSON
ネイティブ JSON ドキュメント列
ENUM('a', 'b')
固定された値の集合の 1 つ
UNSIGNED
非負の数値修飾子
Type sizes & limits
20TINYINT
1 byte: -128..127 (0..255 UNSIGNED)
SMALLINT
2 bytes: -32,768..32,767 (0..65,535)
MEDIUMINT
3 bytes: -8.39M..8.39M (0..16.78M)
INT
4 bytes: -2.15B..2.15B (0..4.29B)
BIGINT
8 bytes: ±9.22×10^18 (0..1.84×10^19)
DECIMAL(M, D)
Exact: M up to 65 digits, D up to 30
FLOAT / DOUBLE
4 / 8 bytes approximate floating point
CHAR(M)
Fixed length, 0..255 characters
VARCHAR(M)
0..65,535 bytes (shared 64KB row limit)
TINYTEXT
Up to 255 bytes (~255 chars)
TEXT
Up to 65,535 bytes (64 KB)
MEDIUMTEXT
Up to 16,777,215 bytes (16 MB)
LONGTEXT
Up to 4,294,967,295 bytes (4 GB)
BLOB types
TINY/—/MEDIUM/LONG: 255B..4GB (binary)
JSON
Stored as LONGBLOB, up to ~4 GB
ENUM / SET
ENUM: 65,535 members; SET: 64 members
DATE
1000-01-01 to 9999-12-31 (3 bytes)
DATETIME
1000 to 9999, microseconds (5–8 bytes)
TIMESTAMP
1970-01-01 to 2038-01-19 UTC (4 bytes)
TIME / YEAR
±838:59:59 / 1901..2155
関数
9NOW(), CURDATE()
現在の日時 / 日付
DATE_FORMAT(d, '%Y-%m-%d')
日付を書式化
DATEDIFF(a, b)
2 つの日付の間の日数
CONCAT(a, ' ', b)
文字列を連結
COALESCE(a, b, 'n/a')
最初の非 null 値
IFNULL(x, 0)
null をデフォルト値に置換
CASE WHEN x > 0 THEN '+' ELSE '-' END
条件式
CAST(x AS CHAR)
値の型を変換
ROUND(x, 2)
小数点以下で丸める
トランザクションと管理
9START TRANSACTION;
トランザクションを開始
COMMIT;
トランザクションを確定
ROLLBACK;
トランザクションを取り消し
SAVEPOINT sp1;
ロールバックポイントを設定
SHOW TABLES;
データベース内のテーブル一覧
DESCRIBE users;
テーブル構造を表示
SHOW PROCESSLIST;
実行中の接続一覧
GRANT ALL ON db.* TO 'u'@'%';
ユーザー権限を付与
mysqldump -u root db > db.sql
データベースをバックアップ (CLI)
「:q」に一致する項目はありません。
お困りですか?
このツールで問題が見つかりましたか?チームにお知らせください。