SQLD 핵심 요약 노트
외울 것과 직접 풀어야 할 것을 분리하면 빨라집니다
SQLD 시험 직전에는 기본서를 처음부터 다시 읽는 것보다 데이터 모델링의 혼동 개념과 SQL의 결과 예측 포인트를 압축해서 반복하는 편이 효율적입니다. 특히 SQL 영역은 문법 이름을 아는 것보다 주어진 테이블에서 실제 결과가 어떻게 나오는지 판단하는 연습이 중요합니다.
📘 모델링 핵심
💻 SQL 핵심
🔥 빈출 포인트
📝 시험 직전 암기
SQLD 출제 범위를 보는 방법
SQLD를 정리할 때 모든 내용을 같은 비중으로 외우면 공부량이 빠르게 늘어납니다. 큰 틀에서는 데이터 모델링의 이해와 SQL 기본 및 활용으로 나누고, 모델링은 개념 간 차이를 설명할 수 있는지, SQL은 실제 실행 결과를 판단할 수 있는지를 기준으로 복습하는 것이 좋습니다.
모델링 문제는 비슷한 용어를 바꿔 놓은 선택지에서 실수가 발생하기 쉽습니다. 엔터티와 인스턴스, 기본속성과 설계속성, 주식별자와 보조식별자처럼 서로 비슷해 보이는 개념은 각각 따로 외우기보다 비교표로 묶는 편이 효율적입니다.
SQL 영역에서는 단순한 정의보다 실행 결과를 묻는 유형에 대비해야 합니다. SELECT 문이 길어지더라도 FROM과 JOIN의 관계, WHERE 조건, GROUP BY, HAVING, SELECT 표현식, ORDER BY를 단계적으로 나눠 보면 복잡도가 크게 낮아집니다.
💡 핵심 기준: 모델링은 “왜 이 선택지가 틀렸는가”를 설명할 수 있어야 하고, SQL은 “이 쿼리의 최종 결과가 무엇인가”를 해설 없이 계산할 수 있어야 합니다.
데이터 모델링 핵심 요약
데이터 모델링에서는 용어 하나를 단독으로 암기하는 것보다 서로의 관계를 연결해야 기억하기 쉽습니다. 가장 먼저 엔터티 → 인스턴스 → 속성 → 관계 → 식별자의 구조를 잡아두면 이후 개념을 정리하기 편합니다.
| 개념 | 시험 직전 기억할 핵심 |
|---|---|
| 엔터티 | 업무에서 관리해야 할 데이터의 집합 |
| 인스턴스 | 엔터티에 속하는 개별 데이터 |
| 속성 | 인스턴스를 설명하는 최소 데이터 단위 |
| 관계 | 엔터티의 인스턴스 사이에 존재하는 연관성 |
| 식별자 | 각 인스턴스를 구분할 수 있도록 하는 속성 또는 속성의 집합 |
속성 분류도 자주 헷갈리는 부분입니다. 기본속성은 업무에서 원래 존재하는 속성, 설계속성은 모델링 과정에서 필요에 의해 만든 속성, 파생속성은 다른 속성으로부터 계산하거나 변환하여 얻을 수 있는 속성이라는 식으로 차이를 잡아두는 것이 좋습니다.
🔥 오답 방지: 개념의 정의만 외우지 말고 예시 하나를 붙여두세요. “회원”은 엔터티, 특정 회원 한 명은 인스턴스, 회원번호·이름은 속성이라는 식으로 연결하면 선택지 판단이 빨라집니다.
정규화와 식별자 핵심 정리
정규화는 단계 이름만 외우면 문제에서 쉽게 흔들립니다. 핵심은 어떤 종속성을 제거하는 과정인지를 연결해서 기억하는 것입니다.
| 단계 | 핵심 포인트 |
|---|---|
| 제1정규형 | 속성값의 원자성을 확보하는 단계로 기억 |
| 제2정규형 | 부분 함수 종속 제거 |
| 제3정규형 | 이행 함수 종속 제거 |
정규화 문제에서는 함수 종속 관계를 직접 표시하면 판단이 빨라집니다. 특히 복합 식별자의 일부에만 일반 속성이 종속되어 있다면 부분 함수 종속 여부를 살펴보고, 기본키가 일반 속성을 결정하고 그 일반 속성이 다시 다른 속성을 결정한다면 이행 종속 여부를 확인합니다.
식별자는 대표성, 생성 여부, 속성 수, 상호 관계 등에 따라 구분할 수 있습니다. 주식별자와 보조식별자, 내부식별자와 외부식별자, 단일식별자와 복합식별자, 본질식별자와 인조식별자의 차이를 한 표에 묶어 복습하면 효율적입니다.
💡 암기 연결: 2정규화는 “부분”, 3정규화는 “이행”을 먼저 떠올린 뒤 문제 속 함수 종속 관계를 확인하세요. 단계 번호만 외우는 것보다 실수가 적습니다.
SELECT와 SQL 실행 순서
SQL 문제를 풀 때 작성된 순서대로만 읽으면 별칭이나 GROUP BY 관련 문제에서 혼동하기 쉽습니다. 논리적인 처리 흐름을 기준으로 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY 순서를 먼저 떠올려두면 여러 유형을 연결해서 이해할 수 있습니다.
WHERE와 HAVING의 차이도 이 순서로 보면 단순합니다. WHERE는 그룹화 전에 개별 행을 걸러내고, HAVING은 GROUP BY 이후 그룹을 대상으로 조건을 적용합니다. 집계함수가 포함된 문제에서 두 조건절을 바꾸어 놓은 선택지를 주의해서 확인해야 합니다.
XML
NULL·집계함수·GROUP BY 핵심
SQLD에서 실수를 줄이려면 NULL을 단순히 ‘0이나 빈 문자열 같은 값’으로 생각하지 않는 것이 중요합니다. NULL은 값이 없거나 알 수 없는 상태를 나타내며 일반적인 비교 연산에서 예상과 다른 결과가 발생할 수 있습니다.
NULL 여부를 확인할 때는 일반적인 등호 비교가 아니라 IS NULL 또는 IS NOT NULL을 사용한다는 점을 먼저 기억해야 합니다. 또한 NULL이 포함된 산술 연산과 집계함수의 처리 차이를 문제에서 자주 확인하게 됩니다.
| 항목 | 핵심 정리 |
|---|---|
| NULL 비교 | IS NULL / IS NOT NULL 확인 |
| COUNT(*) | 행 자체를 기준으로 개수 계산 |
| COUNT(컬럼) | 해당 표현식이 NULL인 행은 집계에서 제외 |
| WHERE | 그룹화 이전 행 조건 |
| HAVING | 그룹화 이후 그룹 조건 |
🔥 빈출 실수: COUNT(*)와 COUNT(컬럼)의 결과를 항상 같다고 판단하지 마세요. 컬럼에 NULL이 있는 예제가 나오면 직접 행을 세어 확인하는 습관이 좋습니다.
JOIN 출제 포인트
JOIN은 SQLD를 준비할 때 반드시 결과 테이블을 직접 그려봐야 하는 영역입니다. INNER JOIN은 조건을 만족하는 데이터가 연결되는 구조이고, OUTER JOIN은 기준에 따라 매칭되지 않는 데이터까지 결과에 남을 수 있다는 차이를 먼저 잡습니다.
특히 OUTER JOIN에서는 어느 테이블의 행이 보존되는지 확인해야 합니다. LEFT OUTER JOIN이라면 왼쪽 테이블의 행을 기준으로 생각하고, 오른쪽에서 일치하는 값이 없을 때 결과의 해당 컬럼이 어떻게 표시되는지를 직접 그려보는 것이 좋습니다.
JOIN에서 흔히 놓치는 부분은 한 행이 반드시 한 행하고만 연결된다고 생각하는 것입니다. 조인 조건에 해당하는 값이 여러 개라면 결과 행도 증가할 수 있습니다. 따라서 문제를 풀 때는 JOIN 종류 확인 → 조건 확인 → 매칭 개수 확인 → 결과 행 계산 순서로 접근합니다.
💡 실전 팁: JOIN 문제를 머릿속에서만 풀다가 틀린다면 작은 결과표를 그리는 것이 오히려 빠릅니다. 행 개수를 먼저 맞힌 뒤 출력 컬럼을 확인하면 복잡한 문제도 정리가 쉬워집니다.
서브쿼리·윈도우 함수 핵심
서브쿼리는 무조건 어려운 SQL이라고 생각하기보다 안쪽 쿼리가 어떤 값을 반환하는지 먼저 계산하는 방식으로 접근하면 단순해집니다. 단일행 결과인지 다중행 결과인지에 따라 사용할 수 있는 비교 방식이 달라질 수 있으므로 반환되는 행의 개수를 먼저 확인합니다.
윈도우 함수에서는 PARTITION BY와 ORDER BY의 역할을 구분해야 합니다. PARTITION BY는 계산할 그룹을 나누고, ORDER BY는 해당 그룹 내부에서 계산 순서를 결정하는 데 사용됩니다. GROUP BY처럼 결과 행 자체를 그룹별 한 행으로 축약한다고 생각하면 오답으로 이어질 수 있습니다.
| 함수 | 순위 특징 |
|---|---|
| RANK | 동점자에게 같은 순위를 주고 다음 순위를 건너뜀 |
| DENSE_RANK | 동점자는 같은 순위지만 다음 순위를 건너뛰지 않음 |
| ROW_NUMBER | 동점 여부와 관계없이 행별 번호를 부여 |
예를 들어 점수가 100, 100, 90이라면 RANK 방식에서는 순위가 1, 1, 3으로 이어지고 DENSE_RANK는 1, 1, 2가 됩니다. ROW_NUMBER는 정렬 기준에 따라 각각 서로 다른 번호를 갖습니다. 이런 차이는 글로 외우는 것보다 작은 데이터를 만들어 직접 번호를 붙여보는 것이 빠릅니다.
SQLD 출제 경향과 오답 패턴
SQLD의 출제 경향을 준비할 때 특정 개념이 몇 문제 나온다고 고정적으로 외우는 방식은 피하는 편이 좋습니다. 회차에 따라 세부 구성은 달라질 수 있기 때문입니다. 대신 개념을 정확히 구분하는 문제와 SQL 실행 결과를 판단하는 문제에 모두 대응할 수 있도록 준비하는 것이 안정적입니다.
모델링에서는 정의를 조금 바꾸거나 서로 비슷한 개념을 교차해서 제시하는 선택지에 대비해야 합니다. 따라서 기본서의 문장을 통째로 외우기보다 핵심 키워드를 기준으로 개념 간 차이를 정리하는 것이 좋습니다.
SQL에서는 짧은 문법 문제만 준비해서는 부족합니다. 테이블 데이터와 SQL을 함께 제시하고 결과를 판단하게 하는 문제에 대비해 JOIN, NULL, 집계, 서브쿼리, 윈도우 함수 등을 작은 데이터로 직접 계산하는 연습이 필요합니다.
| 영역 | 주의할 오답 패턴 | 복습 방법 |
|---|---|---|
| 모델링 | 유사 용어 혼동 | 비교표 작성 |
| 정규화 | 부분·이행 종속 혼동 | 함수 종속 직접 표시 |
| NULL | 0과 동일하게 판단 | NULL 포함 예제 계산 |
| JOIN | 결과 행 개수 착각 | 결과 테이블 직접 작성 |
| 윈도우 함수 | RANK 계열 혼동 | 동점 데이터로 비교 |
🔥 중요: 출제 경향은 회차별로 달라질 수 있으므로 특정 유형의 문항 수를 단정하기보다 공식 출제 범위를 기준으로 공부하세요. 최신 시험 공고와 출제 기준은 응시 회차 전에 반드시 다시 확인하는 것이 안전합니다.
시험 직전 최종 암기표
SQLD 마지막 10분 체크
| 키워드 | 마지막 기억 |
|---|---|
| 엔터티 | 관리 대상 데이터의 집합 |
| 2정규화 | 부분 함수 종속 제거 |
| 3정규화 | 이행 함수 종속 제거 |
| WHERE | 그룹화 전 행 필터링 |
| HAVING | 그룹화 후 그룹 필터링 |
| COUNT(컬럼) | NULL인 표현식 제외 |
| RANK | 동점 뒤 순위 건너뜀 |
| DENSE_RANK | 동점 뒤 순위 연속 |
| ROW_NUMBER | 각 행에 서로 다른 순번 부여 |
시험 직전에는 새로운 내용을 추가하기보다 정규화 → 식별자 → SQL 실행 순서 → NULL → GROUP BY/HAVING → JOIN → 서브쿼리 → 윈도우 함수 순서로 자신의 오답을 빠르게 확인하는 편이 효율적입니다. SQL 문제는 답 번호를 기억하는 것이 아니라 결과가 만들어지는 과정을 다시 계산할 수 있는지를 기준으로 점검하세요.
※ 이 글은 SQLD 학습을 위한 핵심 개념 요약입니다. 시험 일정, 세부 출제범위, 문항 구성, 합격 기준 등은 시행 시점에 변경될 수 있으므로 실제 응시 전 한국데이터산업진흥원 데이터자격검정의 해당 회차 공식 안내와 최신 출제 기준을 확인하세요. 특정 회차의 실제 출제 문항 수나 빈도를 고정적으로 보장하는 자료는 아닙니다.