자격증/SQLD

SQLD 빈출 개념 정리 (정규화·JOIN·서브쿼리·윈도우 함수)

공감(공부하는감자) 2026. 7. 1. 11:44

안녕하세요, 공부하는 감자입니다 🥔

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선

  1. NULL 연산: NULL과의 비교는 전부 UNKNOWN → IS NULL 사용
  2. WHERE vs HAVING: 행 단위 조건은 WHERE, 집계 조건은 HAVING
  3. DELETE vs TRUNCATE vs DROP: DELETE만 롤백 가능, TRUNCATE는 불가, DROP은 테이블 자체 삭제
  4. UNION vs UNION ALL: UNION은 중복 제거, ALL은 전부 유지
  5. 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 비용을 줄이기 위한 중복 컬럼 추가가 대표 기법이에요.

여기까지가 제가 추린 뼈대입니다.

이 글의 표들이 술술 읽히면 개념은 된 거고, 그다음은 문제량 싸움이에요.

다음 글에서는 빈출 함정 유형을 더 깊게 다뤄볼게요.