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');
단일 행 삽입
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
대용량 텍스트 blob
DATE, DATETIME, TIMESTAMP
날짜와 시간 타입
BOOLEAN (TINYINT(1))
0/1로 저장되는 true/false
JSON
네이티브 JSON 문서 열
ENUM('a', 'b')
고정된 값 집합 중 하나
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)
두 날짜 사이 일수
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”와 일치하는 항목이 없습니다.
도움이 필요하신가요?
이 도구에서 문제를 발견하셨나요? 저희 팀에 알려주세요.