평소 JPA·GUI 도구·AI에게 맡기다 보니 잊어버린 SQL 기초를 다시 잡으면서 정리한 노트. SQLD·정보처리기사 시험 범위에 맞춰 주제별 가중치(⭐)와 함정(
⚠️ )을 표기해뒀으니, 시험을 준비하는 사람도 그대로 쓸 수 있다.
📖 이 노트가 만들어진 사연: SQL을 직접 짜본 게 언제였더라 — AI의 리팩토링 계획을 뒤집은 날 (블로그 'SQL 재활' 시리즈)
라이선스: CC BY-SA 4.0 — 출처를 밝히고 동일 조건으로 공유하면 자유롭게 쓸 수 있다.
- 손으로 SQL 짜는 감각 회복 (서브쿼리/조인/윈도우 함수까지)
- SQLD 합격 (총점 60점 이상 + 과목별 40% 미만 과락 없음). 2과목(SQL 기본 및 활용)이 80점 비중 → 여기에 집중
- 정보처리기사 필기/실기 SQL 파트 무난히 통과
SQL을 처음부터 완벽히 외우려고 하면 금방 막힌다. 먼저 아래 감각만 잡고 각 파일을 읽으면 된다.
| GUI에서 하던 일 | SQL로 하는 일 | 먼저 볼 파일 |
|---|---|---|
| 테이블 만들기/컬럼 추가 | CREATE, ALTER |
01 |
| 표에서 조건 걸어 행 찾기 | SELECT ... WHERE ... |
02 |
| 엑셀 피벗처럼 합계/평균 내기 | GROUP BY, HAVING |
03 |
| 두 표를 연결해서 보기 | JOIN ... ON ... |
04 |
| 조회 결과를 다시 조건으로 쓰기 | 서브쿼리, WITH |
05 |
| 순위/누적합/이전 행 비교 | 윈도우 함수 | 06 |
처음 1회독 때는 문법을 다 외우기보다 **"이 쿼리가 어느 테이블에서, 어떤 행을 고르고, 어떤 열을 보여주는가"**를 먼저 해석한다. 시험 직전에는 함정 표시만 다시 보면 된다.
| 순서 | 파일 | 핵심 | 자격증 가중치 |
|---|---|---|---|
| 1 | 00-실습환경.md | 어디서 칠지 정하기 | - |
| 2 | 01-DDL-DML기본.md | CREATE/INSERT/UPDATE/DELETE | ⭐⭐ |
| 3 | 02-SELECT-함수-NULL.md | WHERE, 단일행함수, NULL 처리 | ⭐⭐⭐ |
| 4 | 03-GROUP-BY-HAVING.md | 집계함수, 그룹화 | ⭐⭐⭐ |
| 5 | 04-JOIN.md | INNER/OUTER/SELF/ANSI 조인 | ⭐⭐⭐ SQLD 단골 |
| 6 | 05-서브쿼리-집합연산자.md | 스칼라/인라인뷰/EXISTS, UNION | ⭐⭐⭐ |
| 7 | 06-윈도우함수.md | RANK/LAG/PARTITION BY | ⭐⭐⭐ SQLD 매회 출제 |
| 8 | 07-계층형질의.md | CONNECT BY (Oracle) | ⭐⭐ SQLD 단골 |
| 9 | 08-트랜잭션-격리수준-락.md | COMMIT/ROLLBACK, 격리수준 | ⭐⭐ |
| 10 | 09-인덱스-실행계획.md | B-Tree, 옵티마이저 | ⭐ 정처기 빈출 |
| 11 | 10-모델링-정규화.md | ERD, 1NF~BCNF | ⭐⭐⭐ SQLD 1과목 |
| 12 | 11-DCL-VIEW-시퀀스.md | GRANT, VIEW, SEQUENCE | ⭐ |
| 13 | 12-PIVOT-정규표현식.md | PIVOT/UNPIVOT, REGEXP | ⭐ SQLD 공식 범위 |
| ⚡ | EXAM-치트시트.md | 시험 직전 1시간용 | 🔥 |
| 📝 | EXAM-실전문제.md | 자주 틀리는 문제 30개 | 🔥 |
⭐SQLD빈출: SQLD에서 매회 가까이 나오는 포인트⭐정처기: 정보처리기사에서 자주 나오는 포인트⚠️함정: 시험에서 헷갈리게 내는 부분, 실무에서 사고 잘 나는 부분💡실무: 실제 운영 시 알아두면 좋은 팁- 표준 SQL 기준으로 쓰되, Oracle / PostgreSQL / MySQL 차이가 있으면 별도 표기
- SQLD는 Oracle 방언이 자주 섞이므로, 시험 직전에는 Oracle 기준 함정을 우선 확인
노트만으로 감이 안 잡히는 주제는 돌려볼 수 있는 데모로 만든다.
- demo/nplus1 — JPA N+1과 배치 페치: 같은 코드가 설정 한 줄로 SQL 201개 → 3개 (Hibernate 통계 실측)
- demo/remaining-stock — 잔량(파생 값) 동적 집계 쿼리 해부: 인라인 뷰 소계 + LEFT JOIN + COALESCE (PostgreSQL 실측, 기대값 주석 포함)
- demo/with-recursive — WITH RECURSIVE 계층 전수 조사: 샘플 트리에서 '가정을 어긴 노드' 찾아내기 (PostgreSQL 실측)
- demo/threadlocal-ghost — ThreadLocal 유령 사용자 재현: 스레드풀 1개 + clearContext 누락이면 남의 인증 정보가 남는다 (Spring Boot 실측)
- demo/audit-tx — REQUIRES_NEW 대조 실측: 같은 트랜잭션이면 감사 기록이 롤백과 함께 증발, 분리하면 생존
- 00-실습환경
- 01-DDL-DML기본
- 02-SELECT-함수-NULL
- 03-GROUP-BY-HAVING
- 04-JOIN
- 05-서브쿼리-집합연산자
- 06-윈도우함수
- 07-계층형질의
- 08-트랜잭션-격리수준-락
- 09-인덱스-실행계획
- 10-모델링-정규화
- 11-DCL-VIEW-시퀀스
- 12-PIVOT-정규표현식
- EXAM-치트시트 1회독
- EXAM-실전문제 1회독
- 기출문제 3회분