SQLD·SQLP 이론 정리
SQLD·SQLP 시험 범위를 과목·장·절별로 정리했어요. 데이터 모델링, 정규화, 조인, 서브쿼리, 윈도우 함수, 인덱스와 SQL 튜닝까지 시험 포인트 중심으로 공부하세요.
1과목 · 데이터 모델링의 이해
- 데이터 모델의 이해 – 현실의 업무를 데이터라는 지도로 옮기는 방법. 1과목 전체의 출발점
- 엔터티 – 업무에서 관리할 대상의 집합. 특징 6가지와 분류 기준
- 속성 – 엔터티를 설명하는 최소 단위. 분류 기준과 도메인
- 관계 – 엔터티를 잇는 선. 관계명·차수·선택사양 읽는 법
- 식별자 – 인스턴스를 구분하는 열쇠. 4특징·4분류·식별 관계
- 정규화 – 한 사실은 한 곳에. 중복을 쪼개 이상현상을 막는 법
- 관계와 조인의 이해 – 관계는 조인의 설계도, 조인은 관계의 실행
- 모델이 표현하는 트랜잭션의 이해 – 관계의 필수/선택으로 트랜잭션 범위 읽기
- Null 속성의 이해 – 0도 공백도 아닌 NULL의 연산·비교·집계·정렬 규칙
- 본질식별자와 인조식별자 – 업무가 만든 키와 편의로 만든 키, 언제 무엇을 쓸까
2과목 · SQL 기본과 활용
- 관계형 데이터베이스 개요 – 표로 저장하고 키로 잇는 DB, SQL 명령어 4분류
- SELECT 문 – 조회의 기본 문법, 별칭 규칙, 실행 순서
- 함수 – 문자·숫자·날짜·변환·CASE·NULL 함수 한눈에
- WHERE 절 – 조건 연산자, 우선순위, NOT IN과 NULL 함정
- GROUP BY · HAVING 절 – 행을 묶어 집계하고, 그룹에 조건을 거는 법
- ORDER BY 절 – 정렬 기준 지정법과 DBMS별 NULL 위치
- 조인 – 테이블을 잇는 5가지 조인과 결과 행 수 계산
- 표준 조인 – ANSI 조인 문법과 ON·WHERE 위치의 차이
- 서브쿼리 – 쿼리 안의 쿼리. 위치·반환 형태·연관 여부로 나눈다
- 집합 연산자 – 여러 SELECT 결과를 위아래로 합치고 빼는 연산
- 그룹 함수 – ROLLUP·CUBE·GROUPING SETS로 소계·총계 한 번에
- 윈도우 함수 – 행을 줄이지 않고 순위·누적·비율을 계산
- Top N 쿼리 – 상위 N건 뽑기와 페이징, DBMS별 문법 정리
- 계층형 질의와 셀프 조인 – 조직도처럼 위아래가 있는 데이터 조회하기
- PIVOT / UNPIVOT 절 – 행을 열로 펼치고, 열을 행으로 접기
- 정규 표현식 – 패턴 기호와 REGEXP 함수로 문자열 다루기
- DML – 데이터를 넣고·고치고·지우는 4가지 명령과 삭제 비교
- TCL – 변경을 확정·취소하는 트랜잭션 제어와 SAVEPOINT
- DDL – 테이블의 뼈대를 만들고 바꾸는 명령과 제약조건
- DCL – 누구에게 무엇을 허락할지, 권한 부여·회수와 ROLE
3과목 · SQL 고급활용 및 튜닝 (SQLP)
- 데이터베이스 아키텍처 – 인스턴스와 데이터베이스, SGA·PGA, 백그라운드 프로세스, 블록·익스텐트·세그먼트 구조
- SQL 처리 과정 – 파싱·최적화·로우 소스 생성, 하드/소프트 파싱, 라이브러리 캐시와 바인드 변수
- 데이터베이스 I/O 메커니즘 – 블록 단위 I/O, 논리적·물리적 I/O, Single/Multiblock I/O와 Full Scan·Index Scan 선택
- 실행계획 분석 – EXPLAIN PLAN과 DBMS_XPLAN.DISPLAY, 실행계획 읽는 순서, 오퍼레이션과 Cost·Cardinality
- SQL 트레이스와 실행 통계 – AutoTrace, SQL 트레이스·TKPROF, DISPLAY_CURSOR의 A-Rows·Buffers 해석과 대기 이벤트
- 인덱스 구조와 탐색 – B*Tree의 루트·브랜치·리프 구조와 수직적·수평적 탐색 원리
- 인덱스 스캔 방식 – Range·Full·Unique·Skip·Fast Full Scan의 조건과 Range Scan이 불가능한 경우
- 테이블 액세스 최소화 – 랜덤 액세스 비용, 클러스터링 팩터, 손익분기점과 커버드 인덱스·IOT로 테이블 액세스 줄이기
- 인덱스 스캔 효율화와 설계 – 액세스·필터 조건을 구분해 스캔 범위를 줄이고, 결합 인덱스 컬럼 순서를 정하는 기준
- NL 조인 – 드라이빙 테이블 한 건마다 인덱스로 상대를 찾는 랜덤 액세스 중심 조인
- 소트 머지 조인 – 양쪽을 조인 키로 정렬한 뒤 병합하는 조인, 비등치 대량 조인에 유리
- 해시 조인 – 작은 집합으로 해시 테이블을 만들고 큰 집합으로 탐색하는 대량 등치 조인
- 서브쿼리 조인 – 필터 오퍼레이션·Unnesting·Pushing·뷰 Merging·스칼라 서브쿼리 캐싱
- 옵티마이저와 통계정보 – RBO와 CBO, 옵티마이저 모드, 통계정보로 선택도·카디널리티·비용을 계산하는 원리
- 쿼리 변환 – 서브쿼리 Unnesting, 뷰 Merging, 조건절 Pushing, OR-Expansion 등 옵티마이저의 SQL 재작성
- 힌트 활용 – 힌트 문법과 무시되는 경우, 액세스·조인·쿼리 변환·병렬 힌트 분류와 사용법
- 소트 튜닝 – 소트 발생 원리와 소트를 없애거나 줄이는 SQL·인덱스 설계
- DML 튜닝 – DML 성능 요소와 Direct Path Insert·MERGE·Array Processing 활용
- 파티션 활용 – 파티션 유형과 Pruning, 로컬·글로벌 인덱스 설계와 대용량 관리
- 대용량 배치와 병렬 처리 – One SQL 배치 설계와 병렬 처리 구조(QC·Producer/Consumer·PQ_DISTRIBUTE)
- 고급 SQL 활용 – CASE·데이터 복제·윈도우 함수·WITH로 반복 액세스를 줄이고 페이징을 튜닝
- Lock – 공유·배타 Lock, 블로킹과 교착상태, Oracle TX·TM Lock과 SELECT FOR UPDATE, SQL Server와의 차이
- 트랜잭션 격리성 – Dirty Read·Non-Repeatable Read·Phantom Read와 격리성 수준 4단계, Oracle의 지원 방식
- 동시성 제어 – 비관적·낙관적 동시성 제어, MVCC와 읽기 일관성, Snapshot too old, 채번 방식별 동시성