MySQL チートシート
検索・印刷できる MySQL のリファレンス — クエリ、結合、インデックス、関数、データ型、管理コマンド。無料。
Querying
10SELECT * FROM users;
Select all columns and rows
SELECT id, name FROM users;
Select specific columns
SELECT DISTINCT city FROM users;
Unique values only
WHERE age > 18 AND active = 1
Filter rows by conditions
WHERE name LIKE 'A%'
Pattern match (% = any chars)
WHERE id IN (1, 2, 3)
Match any value in a set
WHERE age BETWEEN 18 AND 30
Inclusive range filter
ORDER BY created_at DESC
Sort descending
LIMIT 10 OFFSET 20
Paginate results
WHERE email IS NULL
Match null values
Joins
8INNER JOIN orders ON orders.user_id = users.id
Rows matching in both tables
LEFT JOIN orders ON ...
All left rows + matches
RIGHT JOIN orders ON ...
All right rows + matches
CROSS JOIN colors
Cartesian product
SELF JOIN: FROM emp e JOIN emp m ON e.mgr = m.id
Join a table to itself
USING (user_id)
Join on a same-named column
UNION / UNION ALL
Combine result sets
SELECT u.*, o.total FROM users u JOIN orders o
Alias tables for clarity
Aggregation
9COUNT(*)
Count rows
SUM(amount)
Total of a numeric column
AVG(price)
Average value
MIN(price), MAX(price)
Smallest and largest
GROUP BY country
Group rows for aggregation
HAVING COUNT(*) > 5
Filter on aggregated groups
GROUP_CONCAT(name)
Concatenate grouped values
COUNT(DISTINCT city)
Count unique values
ROW_NUMBER() OVER (ORDER BY id)
Window function ranking
Modifying data
8INSERT INTO users (name) VALUES ('Sam');
Insert a single row
INSERT INTO users (name) VALUES ('A'),('B');
Insert multiple rows
UPDATE users SET active = 1 WHERE id = 5;
Update matching rows
DELETE FROM users WHERE id = 5;
Delete matching rows
TRUNCATE TABLE logs;
Remove all rows quickly
INSERT ... ON DUPLICATE KEY UPDATE
Upsert on a unique key
REPLACE INTO users ...
Delete + insert on conflict
INSERT IGNORE INTO ...
Skip rows that would error
Schema / DDL
9CREATE TABLE users (id INT PRIMARY KEY);
Create a new table
AUTO_INCREMENT
Auto-numbering column
ALTER TABLE users ADD COLUMN age INT;
Add a column
ALTER TABLE users DROP COLUMN age;
Remove a column
ALTER TABLE users MODIFY name VARCHAR(100);
Change a column type
DROP TABLE IF EXISTS users;
Delete a table
FOREIGN KEY (user_id) REFERENCES users(id)
Reference another table
ON DELETE CASCADE
Cascade deletes to children
CREATE TABLE t2 LIKE t1;
Copy a table structure
Indexes & keys
8PRIMARY KEY (id)
Unique row identifier
UNIQUE (email)
Enforce unique values
CREATE INDEX idx_name ON users (name);
Speed up lookups on a column
CREATE INDEX idx_ab ON t (a, b);
Composite (multi-column) index
DROP INDEX idx_name ON users;
Remove an index
FULLTEXT (body)
Full-text search index
EXPLAIN SELECT ...;
Show the query plan
SHOW INDEX FROM users;
List indexes on a table
Data types
9INT, BIGINT, TINYINT
Integer types by size
DECIMAL(10, 2)
Exact fixed-point numbers
VARCHAR(255)
Variable-length string
TEXT, LONGTEXT
Large text blobs
DATE, DATETIME, TIMESTAMP
Date and time types
BOOLEAN (TINYINT(1))
True/false stored as 0/1
JSON
Native JSON document column
ENUM('a', 'b')
One of a fixed set of values
UNSIGNED
Non-negative numeric modifier
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
Functions
9NOW(), CURDATE()
Current datetime / date
DATE_FORMAT(d, '%Y-%m-%d')
Format a date
DATEDIFF(a, b)
Days between two dates
CONCAT(a, ' ', b)
Join strings
COALESCE(a, b, 'n/a')
First non-null value
IFNULL(x, 0)
Replace null with a default
CASE WHEN x > 0 THEN '+' ELSE '-' END
Conditional expression
CAST(x AS CHAR)
Convert a value type
ROUND(x, 2)
Round to decimals
Transactions & admin
9START TRANSACTION;
Begin a transaction
COMMIT;
Persist the transaction
ROLLBACK;
Undo the transaction
SAVEPOINT sp1;
Set a rollback point
SHOW TABLES;
List tables in the database
DESCRIBE users;
Show a table structure
SHOW PROCESSLIST;
List running connections
GRANT ALL ON db.* TO 'u'@'%';
Grant user privileges
mysqldump -u root db > db.sql
Back up a database (CLI)
「:q」に一致する項目はありません。
MySQL チートシートについて
このMySQLチートシートは、実際に書くSQLを1つの検索可能なリファレンスにまとめています。クエリ、結合、集計、データの変更、スキーマとDDL文、インデックスとキー、サイズと制限を含むデータ型、組み込み関数、トランザクションと管理コマンドです。
LEFT JOIN、UPSERT、ALTER TABLEの正確な形といった構文の思い出しにも、整数の範囲、VARCHARの上限、どのインデックス型がどのクエリに適しているかといった誰も暗記していない細かな情報の検索にも役立ちます。
ツール内の他のチートシートと同様、無料でクライアントサイドです。検索ボックスで行をライブにフィルタリングし、固定表示の目次でセクション間を移動し、ワンクリックで任意の文をコピーし、デスクで参照するためにページを印刷できます。
MySQL チートシートの使い方
- シートを開き、Querying and JoinsからSchema / DDL、Transactions & adminまでのセクションを確認します。
- JOIN、INDEX、GROUP BYといったキーワードを検索して、すべてのスニペットをライブに絞り込みます。
- 構文ではなくストレージの詳細が必要なときは、Data typesやType sizes & limitsに移動します。
- 文またはそのコピーアイコンをクリックして、SQLをクリップボードにコピーします。
- MySQLリファレンス全体の紙のコピーが欲しければPrintを使います。
よくある質問
クエリ、結合、集計、データ変更、スキーマDDL、インデックスとキー、データ型、型のサイズと制限、関数、トランザクションと管理コマンドをカバーする10セクションで、それぞれコピーしてすぐ使えるSQLスニペットとして提供されています。
はい。専用のセクションが、通常であればマニュアルで調べる必要がある整数の範囲や文字列長の上限といった型のサイズと制限を、データ型のセクションのすぐ隣に掲載しています。
はい。SQLスニペットまたはその行のコピーアイコンをクリックすれば、すぐにクリップボードにコピーされます。
どちらもできます。検索ボックスは入力するたびにライブのマッチ数とともに全行を絞り込み、Printボタンはページの余分な要素を除いたきれいな出力を生成します。
はい、完全に無料で、ログイン不要でブラウザ上で動作します。
人気の検索
mysql cheat sheet
mysql commands list
mysql data types
mysql joins syntax
mysql alter table syntax
mysql index syntax
mysql aggregate functions
mysql sql reference
お困りですか?
このツールで問題が見つかりましたか?チームにお知らせください。