
안녕하세요, 공부하는 감자입니다 🥔
SQLD 공부를 하다 보면 교재가 두꺼워서 어디가 진짜 시험에 나오는 부분인지 감이 안 올 때가 있어요. 그래서 제가 회독하면서 "이건 무조건 나온다" 싶었던 개념만 과목별로 추려봤습니다.
시험 전 점검용으로 쓰셔도 좋아요.
2과목: SQL 기본 및 활용
배점이 큰 2과목부터 갑니다.
SELECT 실행 순서 — 이거 모르면 절반이 흔들려요
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
별칭을 어디서 쓸 수 있는지, HAVING과 WHERE의 차이가 왜 생기는지가 전부 이 순서에서 나옵니다. 무조건 암기.
JOIN 6종
여섯 종류의 결과 차이를 묻는 문제가 기본입니다.
| 유형 | 결과 |
|---|---|
| INNER JOIN | 양쪽 일치 행만 |
| LEFT OUTER JOIN | 왼쪽 전체 + 오른쪽 일치(없으면 NULL) |
| RIGHT OUTER JOIN | 오른쪽 전체 + 왼쪽 일치 |
| FULL OUTER JOIN | 양쪽 전체 |
| CROSS JOIN | 모든 조합(카테시안 곱) |
| NATURAL JOIN | 같은 이름 컬럼으로 자동 결합 |
OUTER 계열은 "한쪽 전체 + 없으면 NULL"이 포인트예요.
서브쿼리 — 위치로 이름이 정해져요
- SELECT절 → 스칼라 서브쿼리
- FROM절 → 인라인 뷰
- WHERE절 → 일반 서브쿼리
상관(Correlated) 서브쿼리와 비상관 서브쿼리 구분도 자주 나옵니다. 메인 쿼리의 값을 참조하면 상관이에요.
윈도우 함수 — 동점 처리만 정확히
함수() OVER (PARTITION BY 그룹 ORDER BY 정렬) 형태인데, 시험은 거의 동점 처리를 묻습니다.
- ROW_NUMBER: 동점이어도 1,2,3,4 순차 번호
- RANK: 동점 동순위, 다음 순위 건너뜀 (1,2,2,4)
- DENSE_RANK: 동점 동순위, 다음 순위 연속 (1,2,2,3)
- LAG/LEAD: 이전/다음 행 값 참조
- SUM() OVER(): 누적합 같은 집계
그룹 확장 함수
ROLLUP(A,B)는 A별 소계와 전체 합계까지, CUBE(A,B)는 모든 조합의 소계, GROUPING SETS는 지정한 조합만. 세 개의 차이를 표 형태 결과로 구분하는 문제가 나옵니다.
비교 문제 단골 5선
- NULL 연산: NULL과의 비교는 전부 UNKNOWN →
IS NULL사용 - WHERE vs HAVING: 행 단위 조건은 WHERE, 집계 조건은 HAVING
- DELETE vs TRUNCATE vs DROP: DELETE만 롤백 가능, TRUNCATE는 불가, DROP은 테이블 자체 삭제
- UNION vs UNION ALL: UNION은 중복 제거, ALL은 전부 유지
- CHAR vs VARCHAR: CHAR는 고정 길이(남는 자리 공백 채움), VARCHAR는 가변
이 다섯 개는 회차만 바뀌고 거의 매번 출제되는 느낌이었어요.
개념을 한 바퀴 돌렸다면 실제 문제로 확인하는 게 빠른데, 저는 문어CBT 무료 모의고사로 어느 개념이 빈 곳인지 찾는 용도로 썼습니다.
SQLD·정처기·컴활·ADsP 무료 CBT 모의고사
기출 변형 문제, 자동 채점, 회차별 실력 추적까지 가입 없이 바로 풀어보세요.
sqldpass.com
1과목: 데이터 모델링의 이해
엔터티 — 분류 기준 두 가지
엔터티는 쉽게 말해 테이블의 후보예요. 분류 문제가 자주 나옵니다.
| 기준 | 유형 | 예시 |
|---|---|---|
| 유무형 | 유형 / 개념 / 사건 | 학생·강의실 / 학과·보험상품 / 수강신청·결제 |
| 발생 시점 | 기본 / 중심 / 행위 | 고객·부서 / 계약·주문 / 주문이력·변경이력 |
기본 엔터티는 다른 엔터티에 의존하지 않고 독립적으로 존재합니다. 시험에서 "독립 엔터티"라는 표현으로 나오기도 해요.
속성과 관계
속성은 엔터티의 최소 의미 단위로, 세 가지로 나뉩니다.
- 기본 속성: 업무에서 직접 추출
- 설계 속성: 일련번호·코드처럼 설계 중 생성
- 파생 속성: 합계·평균처럼 계산된 값
관계는 존재 관계(부서—사원)와 행위 관계(고객—주문)로 구분하고, 카디널리티(1:1, 1:N, M:N)와 필수/선택 참여를 가리는 문제가 나와요.
식별자 — 조건 네 가지
주식별자의 조건: 유일성, 최소성, 불변성, 존재성. 이 네 단어는 그냥 외우세요.
주식별자는 유일성과 NOT NULL을 만족해야 하고(사원번호), 비식별자는 유일할 수도 아닐 수도 있습니다(이메일).
정규화 — 단계별 제거 대상
단계마다 "무엇을 제거하는가"만 잡으면 됩니다.
| 단계 | 제거 대상 |
|---|---|
| 1NF | 반복 그룹, 다중값 (원자값만 허용) |
| 2NF | 부분 함수 종속 (복합키 일부에만 종속) |
| 3NF | 이행 함수 종속 (A→B→C의 간접 종속) |
| BCNF | 후보키가 아닌 결정자 |
시험은 1NF~3NF가 핵심이고, 특히 2NF와 3NF를 구분시키는 문제가 반복됩니다.
반정규화는 반대로 성능을 위해 의도적으로 깨는 것 — 테이블 병합, 수직/수평 분할, JOIN 비용을 줄이기 위한 중복 컬럼 추가가 대표 기법이에요.
여기까지가 제가 추린 뼈대입니다.
이 글의 표들이 술술 읽히면 개념은 된 거고, 그다음은 문제량 싸움이에요.
다음 글에서는 빈출 함정 유형을 더 깊게 다뤄볼게요.
'자격증 > SQLD' 카테고리의 다른 글
| SQLD 윈도우 함수 정리 (RANK·DENSE_RANK 구분) (0) | 2026.07.01 |
|---|---|
| SQLD 정규화 1NF 2NF 3NF BCNF 구분법 (0) | 2026.07.01 |
| SQLD 시험 정보 총정리, 일정·응시료·합격 기준 (0) | 2026.06.30 |
| 비전공자 SQLD 4주 합격 공부법 (문과생) (0) | 2026.06.30 |
| SQLD 독학 3주 공부법, 시간 배분 전략 (0) | 2026.06.30 |