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을 조회, 조인, 집계, 데이터 수정, 스키마와 DDL 문, 인덱스와 키, 크기 및 한계가 명시된 데이터 타입, 내장 함수, 트랜잭션과 관리 명령까지 검색 가능한 한 페이지로 모았습니다.
LEFT JOIN, UPSERT, ALTER TABLE의 정확한 문법을 떠올리는 용도로도, 정수 범위, VARCHAR 한계, 어떤 인덱스 타입이 특정 쿼리에 맞는지처럼 아무도 외우지 않는 세부 정보를 찾아보는 용도로도 유용합니다.
도구의 다른 모든 치트 시트와 마찬가지로 무료이며 클라이언트 사이드로 동작합니다: 검색창으로 항목을 실시간 필터링하고, 고정된 목차로 섹션 사이를 이동하며, 클릭 한 번으로 명령문을 복사하고, 책상에서 참조할 페이지를 인쇄할 수 있습니다.
MySQL 치트 시트 사용 방법
- 시트를 열어 조회와 조인부터 스키마/DDL, 트랜잭션 & 관리까지 섹션을 살펴보세요.
- JOIN, INDEX, GROUP BY 같은 키워드를 검색해 모든 스니펫을 실시간으로 필터링하세요.
- 문법이 아니라 저장 관련 세부 정보가 필요할 때는 데이터 타입이나 타입 크기 & 한계로 이동하세요.
- 명령문이나 복사 아이콘을 클릭해 SQL을 클립보드에 복사하세요.
- 전체 MySQL 참조 자료를 종이로 보려면 인쇄를 사용하세요.
자주 묻는 질문
조회, 조인, 집계, 데이터 수정, 스키마 DDL, 인덱스와 키, 데이터 타입, 타입 크기와 한계, 함수, 트랜잭션과 관리 명령까지 열 개 섹션이며, 각각 복사해서 바로 쓸 수 있는 SQL 스니펫으로 구성됩니다.
네. 별도의 섹션에서 타입 크기와 한계를 정리해 두어, 그렇지 않으면 매뉴얼에서 찾아봐야 할 정수 범위와 문자열 길이 한도를 데이터 타입 섹션 바로 옆에서 확인할 수 있습니다.
네. SQL 스니펫이나 해당 행의 복사 아이콘을 클릭하면 즉시 클립보드에 복사됩니다.
둘 다 가능합니다. 검색창은 입력하는 대로 모든 항목을 실시간 일치 개수와 함께 필터링하고, 인쇄 버튼은 페이지 장식 없이 깔끔한 버전을 출력합니다.
네, 완전 무료이며 로그인 없이 브라우저에서 실행됩니다.
인기 검색어
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
도움이 필요하신가요?
이 도구에서 문제를 발견하셨나요? 저희 팀에 알려주세요.