SQL 치트시트
데이터를 조회하고 변경하는 핵심 SQL 문을 작업별로 묶었습니다. 정확한 문법은 데이터베이스(PostgreSQL, MySQL, SQLite, SQL Server)마다 조금씩 다르지만 아래 기본기는 거의 어디서나 통합니다. 지저분한 쿼리를 정리하려면 SQL 포매터를 쓰세요.
업데이트 2026-07-06
조회(SELECT)
| 문 | 하는 일 |
|---|---|
| SELECT * FROM t | 테이블 t의 모든 열과 행 반환 |
| SELECT a, b FROM t | 열 a, b만 반환 |
| SELECT DISTINCT a FROM t | a의 고유 값 반환 |
| ... WHERE a = 5 | a가 5인 행 필터 |
| ... ORDER BY a DESC | a 기준 내림차순 정렬 |
| ... LIMIT 10 | 최대 10행 반환 |
| ... OFFSET 20 | 처음 20행 건너뛰기(페이징) |
| SELECT COUNT(*) FROM t | 행 개수 세기 |
| SELECT SUM(a), AVG(a) FROM t | 집계: a의 합계와 평균 |
| ... GROUP BY category | 카테고리별로 행을 묶어 집계 |
| ... HAVING COUNT(*) > 5 | 그룹 필터(집계용 WHERE) |
필터(WHERE)
| 문 | 하는 일 |
|---|---|
| WHERE a IN (1, 2, 3) | 목록 안의 값 중 하나와 일치 |
| WHERE a BETWEEN 1 AND 9 | 범위 일치(양 끝 포함) |
| WHERE name LIKE 'A%' | 패턴 일치: A로 시작(% = 임의 문자) |
| WHERE name LIKE '_at' | _는 정확히 한 글자와 일치 |
| WHERE a IS NULL | a에 값이 없는 행 일치 |
| WHERE a > 5 AND b < 10 | AND / OR로 조건 결합 |
테이블 조인
| 문 | 하는 일 |
|---|---|
| INNER JOIN u ON t.id = u.tid | 양쪽 테이블에 매칭이 있는 행 |
| LEFT JOIN u ON t.id = u.tid | 왼쪽 테이블의 모든 행(매칭 여부 무관) |
| RIGHT JOIN u ON t.id = u.tid | 오른쪽 테이블의 모든 행 |
| FULL JOIN u ON t.id = u.tid | 양쪽 테이블의 모든 행 |
데이터 변경
| 문 | 하는 일 |
|---|---|
| INSERT INTO t (a, b) VALUES (1, 2) | 새 행 추가 |
| UPDATE t SET a = 5 WHERE id = 1 | 기존 행 변경(WHERE 주의!) |
| DELETE FROM t WHERE id = 1 | 행 삭제(WHERE 주의!) |
스키마(테이블 & 인덱스)
| 문 | 하는 일 |
|---|---|
| CREATE TABLE t (id INT, name TEXT) | 새 테이블 생성 |
| ALTER TABLE t ADD col TEXT | 열 추가 |
| DROP TABLE t | 테이블과 모든 데이터 삭제 |
| CREATE INDEX idx ON t (a) | a 조회 속도를 높일 인덱스 추가 |
지킬 만한 안전 습관: UPDATE나 DELETE의 WHERE 절을 먼저 쓰세요. WHERE 없이 실행하면 테이블의 모든 행이 바뀌거나 삭제됩니다.
관련 도구