
안녕하세요, 공부하는 감자입니다 🥔
2026년 SQLD를 준비하면서 기출 경향을 쭉 훑어봤는데, 공부 순서를 잡는 데 도움이 될 것 같아 정리해서 공유합니다. 큰 틀(객관식 50문항·60점 합격)은 그대로지만, 2024년 출제기준 개편이 두 해째 적용되면서 비중이 2과목(SQL) 쪽으로 확실히 쏠려 있어요.
그래서 전략은 단순합니다. 1과목은 과락만 확실히 막고, 2과목의 JOIN·서브쿼리·윈도우 함수·계층형 쿼리 네 덩어리에 시간을 붓는 거예요.
시험 구조부터 — 과락이 제일 무섭습니다
숫자부터 한 표로 보겠습니다.
| 항목 | 내용 |
|---|---|
| 시행 기관 | 한국데이터산업진흥원(KDATA) |
| 2026 회차 | 60회(3/7) · 61회(5/31) · 62회(8/22) · 63회(11/14) |
| 문항 | 객관식 50문항 (단답형 없음), 90분 |
| 배점 | 1과목 20점(10문항) + 2과목 80점(40문항) |
| 합격 | 총점 60점 이상 + 각 과목 40% 이상 |
| 과락 | 1과목 8점 미만 / 2과목 32점 미만 |
총점이 아무리 높아도 과락 한 번이면 불합격입니다. 1과목 10문항 중 최소 4개는 맞춘다는 기준으로, 데이터 모델링을 버리지 마세요.
참고로 2023년까지는 단답형이 섞여 있었는데 2024년 52회부터 선택형 50문항으로 통일됐고, 1과목 명칭도 "데이터 모델과 SQL"로 바뀌면서 성능 이슈가 2과목으로 넘어갔어요. 그 이후 기출에서 보이는 경향은 세 가지입니다.
- 1과목에서 식별자·관계·정규화를 말로 꼬아 묻는 지문형 문제 증가
- 계층형 쿼리·윈도우 함수·정규표현식이 매 회차 2~3문제씩 고정 출제
- NVL·COALESCE·NULLIF, 집합 연산, CASE 같은 실행 결과 예측형 비중 확대
즉 2026 대비의 핵심은 암기가 아니라 "쿼리를 눈으로 실행해보는 훈련"이에요.
2과목 — 점수가 갈리는 곳
JOIN, 그중에서도 ON vs WHERE
JOIN 종류별 결과(INNER는 매칭 행만, LEFT/RIGHT는 한쪽 전체 유지, FULL은 양쪽, CROSS는 m×n, NATURAL/USING은 공통 컬럼 한 번만 출력)는 기본이고, 진짜 함정은 조건의 위치입니다.
-- (1) WHERE에 쓰면 LEFT JOIN이 INNER처럼 동작
SELECT m.member_name, g.grade_name
FROM members m
LEFT JOIN grades g ON m.grade_id = g.grade_id
WHERE g.grade_name = 'VIP';
-- (2) NULL 행까지 보려면 조건을 ON으로
SELECT m.member_name, g.grade_name
FROM members m
LEFT JOIN grades g
ON m.grade_id = g.grade_id
AND g.grade_name = 'VIP';
(1)은 매칭 안 돼서 NULL로 채워진 행이 WHERE에서 걸러져버립니다. 두 쿼리의 결과 행 수를 손으로 직접 써본 사람만 맞힐 수 있게 설계된 문제가 매번 나와요.
서브쿼리 — 위치별 이름과 제약
서브쿼리는 어느 절에 있는지만 보면 이름과 제약이 따라옵니다.
| 위치 | 이름 | 주의점 |
|---|---|---|
| SELECT절 | 스칼라 서브쿼리 | 반드시 1행 1열 |
| FROM절 | 인라인 뷰 | 별칭 필수 |
| WHERE절 | 일반/상관 서브쿼리 | 상관은 바깥 행마다 재실행 |
여기서 하나만 더 가져가세요. NULL이 섞일 수 있는 컬럼에는 NOT IN 대신 NOT EXISTS. NOT IN 서브쿼리 결과에 NULL이 하나라도 있으면 전체가 공집합이 됩니다.
윈도우 함수 — 이제는 프레임 절까지
SELECT region, amount,
ROW_NUMBER() OVER (PARTITION BY region ORDER BY amount DESC) AS rn,
RANK() OVER (PARTITION BY region ORDER BY amount DESC) AS rk,
DENSE_RANK() OVER (PARTITION BY region ORDER BY amount DESC) AS drk,
SUM(amount) OVER (PARTITION BY region ORDER BY amount DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS run_total
FROM sales;
동점 처리는 ROW_NUMBER가 1,2,3,4 / RANK가 1,2,2,4 / DENSE_RANK가 1,2,2,3. 여기까지는 다들 외웁니다.
그런데 최근에는 ROWS BETWEEN ... 프레임 절에서 UNBOUNDED PRECEDING, CURRENT ROW, N PRECEDING/FOLLOWING 차이를 묻는 누적합·이동평균 문제가 올라오고 있어요. 2026 대비 포인트는 여기입니다.
계층형 쿼리 — 네 가지 의사컬럼
PRIOR가 어느 컬럼에 붙느냐로 순방향(부모→자식)/역방향(자식→부모)이 갈리고, LEVEL, CONNECT_BY_ROOT, CONNECT_BY_ISLEAF, SYS_CONNECT_BY_PATH 네 가지는 57회까지 반복 출제됐습니다. ORDER SIBLINGS BY는 형제 노드 안에서만 정렬한다는 것도 함께요.
일반 ORDER BY를 쓰면 계층 구조가 깨집니다.
그룹 확장 함수와 NULL 처리
세 함수의 차이는 결국 "어떤 소계를 만들어주느냐"입니다.
| 함수 | 생성되는 소계 |
|---|---|
| ROLLUP(A,B) | (A,B), (A), () |
| CUBE(A,B) | (A,B), (A), (B), () |
| GROUPING SETS((A),(B)) | (A), (B)만 |
GROUPING()이 소계 행에서 1, 일반 그룹 행에서 0을 돌려준다는 것도 선지 단골이고요. NULL 쪽에서는 집계 함수의 NULL 무시 여부가 핵심입니다.
COUNT(*)는 NULL도 세지만 COUNT(col), SUM(col), AVG(col)은 건너뛰어요. 그래서 AVG(col)이 "전체 행 평균"이 아닐 수 있다는 함정이 반복 출제됩니다.
SELECT 실행 순서 한 줄
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY
SELECT절 별칭은 ORDER BY에서만 쓸 수 있다(WHERE/GROUP BY/HAVING에서는 불가) — 실행 순서상 SELECT가 ORDER BY보다 앞이기 때문인데, 이 한 줄에서 매번 한 문제가 나옵니다.
1과목 — 4문항만은 사수
식별자: 주식별자 조건은 유일성·최소성·불변성·존재성 네 가지. 주민번호가 주식별자로 부적절한 이유를 물으면 답은 불변성이 아니라 개인정보 보호·존재성(외국인 미보유) 쪽입니다.
정규화: 한 줄 판별법으로 외우는 게 빨라요.
| 단계 | 판별 질문 |
|---|---|
| 1NF | 한 칸에 여러 값이 들어있지 않은가? |
| 2NF | 복합키의 일부만으로 결정되는 속성이 있는가? |
| 3NF | PK 아닌 속성이 PK 아닌 속성을 결정하는가? |
| BCNF | 후보키가 아닌데 결정자인 속성이 있는가? |
2NF는 복합키가 있을 때만 논의됩니다. 복합키가 없는 테이블은 1NF만 만족하면 자동으로 2NF예요. 이 함정이 거의 매 회차 나옵니다.
반정규화: "성능을 위해 의도적으로 깬다"고 외우되, 시험은 언제 쓰면 안 되는가를 묻습니다. 조회는 빨라져도 갱신 이상이 생기고 무결성 책임이 애플리케이션으로 넘어온다는 게 정답 선지 단골이에요.
자주 틀리는 것들
WHERE col = NULL→ 항상 UNKNOWN.IS NULL로- NULL 섞인
NOT IN→ 공집합.NOT EXISTS로 - 집계 조건은 HAVING, 행 조건은 WHERE
- OUTER JOIN 뒤 WHERE 조건 → INNER로 변신
- ORDER BY 없는 ROWNUM → 정렬 전에 번호가 붙음. Top-N은 인라인 뷰로 먼저 정렬
- DDL은 자동 커밋 → TRUNCATE·DROP은 롤백 불가, DELETE만 가능
- UNION은 중복 제거(+정렬 비용), UNION ALL은 전부 유지
우선순위로 묶으면
지금까지 내용을 출제 비중 순으로 정리하면 이렇습니다.
| 우선순위 | 주제 | 예상 출제 |
|---|---|---|
| 최상 | JOIN(ON vs WHERE), 서브쿼리 분류 | 5~7문항 |
| 상 | 윈도우 함수, ROLLUP/CUBE | 4~6문항 |
| 상 | 계층형 쿼리, NULL 함수 | 3~5문항 |
| 중 | 정규화·식별자·관계 | 5~7문항 |
| 중 | 실행 순서, 집합 연산, CASE | 3~5문항 |
| 하 | 정규표현식, 트랜잭션/DDL 이론 | 1~3문항 |
이 순서대로만 채워도 60점 합격선은 꽤 안정적이에요. 다만 이론만 읽고는 60점이 애매합니다.
실행 결과를 정확히 계산해야 하는 문제가 늘고 있어서, 결국 회차 단위 풀이로 확인하는 과정이 필요해요. 저는 개념 한 덩어리 끝낼 때마다 문어CBT 모의고사로 그 영역을 점검했는데, 무료라서 회독용으로 돌리기에 부담이 없었습니다.
SQLD·정처기·컴활·ADsP 무료 CBT 모의고사
기출 변형 문제, 자동 채점, 회차별 실력 추적까지 가입 없이 바로 풀어보세요.
sqldpass.com
마지막으로 시험장 팁 하나. 2과목 쿼리 문제는 선지부터 보지 말고 쿼리를 한 줄씩 따라가며 중간 테이블을 작게 그려보세요. OUTER JOIN과 윈도우 함수 문제 난이도가 체감상 절반으로 떨어집니다.
2026년 응시하시는 분들 모두 한 번에 끝내시길 바라요.
'자격증 > SQLD' 카테고리의 다른 글
| SQLD CONNECT BY 계층 쿼리 정리 (PRIOR 이해법) (0) | 2026.06.22 |
|---|---|
| SQLD NULL 연산 정리, 오답률 1위 유형 (0) | 2026.06.20 |
| SQLD 조인 문제, 결국 '몇 행이 나오느냐' 싸움입니다 (0) | 2026.06.20 |
| 2026 SQLD 일정 정리, 회차별 접수·시험·발표일 (0) | 2026.06.16 |
| SQLD 2주 합격 플랜 — 2과목부터 풀어야 하는 이유 (1) | 2026.06.14 |