SQL DEVELOPER CERTIFICATION · 2026
SQLD 자격증 핵심 요약 노트 및 출제 경향 분석
SQL 개발자 자격시험 과목별 핵심 개념, SQL 문법, 기출 유형, 오답 포인트, 실전 공부법 총정리
데이터 분석과 데이터베이스 관련 직무를 준비한다면 한 번쯤 접하게 되는 자격증이 SQLD(SQL Developer, SQL 개발자)입니다. SQLD는 데이터 모델링의 기본 개념과 SQL을 활용한 데이터 조회 및 처리 능력을 평가하는 자격시험입니다.
SQLD 시험을 준비할 때 중요한 것은 단순히 SQL 명령어를 암기하는 것이 아닙니다. 테이블 간 관계를 이해하고, SQL이 어떤 순서로 데이터를 처리하는지 파악하며, 실제 쿼리의 실행 결과를 논리적으로 추론하는 능력이 필요합니다.
특히 SELECT문, JOIN, GROUP BY, 서브쿼리, 윈도 함수, NULL 처리 등은 서로 연결되어 있어 개념을 정확히 이해하지 못하면 비슷한 유형에서 반복적으로 실수할 수 있습니다.
이번 글에서는 SQLD 시험을 준비하는 수험생을 위해 시험 구조, 과목별 핵심 요약, 주요 SQL 문법, 출제 경향, 빈출 함정, 학습 계획을 정리하겠습니다.
- SQLD는 데이터 모델링과 SQL 활용 능력을 평가하는 자격시험입니다.
- 주요 학습 영역은 데이터 모델링의 이해와 SQL 기본 및 활용입니다.
- 엔터티·속성·관계·식별자 개념을 구분해야 합니다.
- 기본키와 외래키, 정규화의 목적을 이해해야 합니다.
- SELECT문의 논리적 처리 순서를 학습해야 합니다.
- INNER JOIN과 OUTER JOIN의 결과 차이를 설명할 수 있어야 합니다.
- GROUP BY와 HAVING의 역할을 구분해야 합니다.
- NULL과 집계 함수의 처리 규칙을 정확하게 이해해야 합니다.
- 서브쿼리와 윈도 함수의 실행 결과를 계산하는 연습이 필요합니다.
- 개념 암기와 SQL 결과 예측 문제를 함께 공부하는 것이 효율적입니다.
SQLD 시험 일정, 응시료, 시험 시간, 문항 수, 합격 기준, 과목별 과락 조건과 세부 출제 범위는 시행기관의 공지에 따라 변경될 수 있습니다.
이 글은 SQLD의 핵심 학습 내용을 중심으로 작성한 요약 자료이며, 2026년 회차별 출제 통계나 최신 기출문항을 직접 분석한 공식 보고서는 아닙니다. 출제 경향은 주요 학습 영역과 대표적인 문제 유형을 바탕으로 정리했습니다.
접수 전에는 한국데이터산업진흥원 데이터자격검정 공식 홈페이지에서 해당 회차의 최신 시험 안내를 반드시 확인하시기 바랍니다.
1. SQLD 자격증 시험 구조와 공부 방향
① SQLD란 무엇인가?
SQLD는 SQL 개발자 자격을 의미하며 데이터베이스의 기본 구조와 SQL을 활용하는 능력을 평가합니다. 데이터 분석, 개발, 데이터베이스 운영 등 다양한 분야에서 활용되는 SQL의 기초를 체계적으로 공부하는 데 도움이 됩니다.
② 주요 시험 과목
SQLD는 일반적으로 다음 두 영역을 중심으로 학습합니다.
- 데이터 모델링의 이해: 데이터 모델, 엔터티, 속성, 관계, 식별자, 정규화 등
- SQL 기본 및 활용: SELECT, JOIN, 집계 함수, 서브쿼리, 윈도 함수 등
③ SQLD와 SQLP의 차이
SQLD는 SQL 개발자의 기본 역량을 평가하는 자격이며, SQLP는 SQL 전문가 수준의 지식과 활용 능력을 평가하는 별도 자격입니다. 준비 범위와 난이도가 다르므로 자신의 학습 목표에 맞게 선택해야 합니다.
④ 비전공자도 준비할 수 있을까?
데이터베이스를 처음 배우는 비전공자도 기초 개념부터 공부하면 SQLD 학습을 시작할 수 있습니다. 다만 SQL 문법을 처음 접한다면 실습 시간을 충분히 확보하는 것이 좋습니다.
⑤ 암기와 실습의 비중
데이터 모델링은 개념 간 차이를 이해하고 암기하는 학습이 중요합니다. SQL 기본 및 활용은 실제 쿼리를 읽고 결과를 예측하는 연습이 효과적입니다.
⑥ SQLD에서 중요한 문제 해결 능력
시험 문제에서 테이블과 SQL 문장이 함께 제시되면, 먼저 데이터 구조를 파악하고 각 연산이 어떤 결과를 만드는지 순서대로 확인해야 합니다.
⑦ 데이터베이스 실습 환경
SQL을 직접 실행할 수 있는 학습용 데이터베이스를 준비하면 좋습니다. 다만 SQL 문법과 함수는 DBMS마다 차이가 있으므로 시험에서 다루는 표현과 사용 중인 DBMS의 문법을 구분해야 합니다.
⑧ 시험 준비 순서
데이터 모델링의 기본 용어를 정리한 뒤 SELECT와 WHERE, GROUP BY, JOIN, 서브쿼리, 윈도 함수 순서로 공부하면 개념을 연결하기 쉽습니다.
⑨ 기출문제 활용법
기출 또는 복원 유형을 공부할 때에는 정답만 암기하지 말고 오답 선택지가 왜 틀렸는지 설명할 수 있어야 합니다. 특히 NULL과 OUTER JOIN처럼 작은 조건 차이로 결과가 달라지는 문제는 직접 데이터를 만들어 확인하는 것이 좋습니다.
⑩ 공부 자료 선택
최신 공식 출제 범위를 먼저 확인하고, 개념서 한 권과 SQL 실습 환경, 문제 풀이 자료를 함께 활용하는 방식이 효율적입니다.
2. 1과목 데이터 모델링 핵심 요약 노트
① 데이터 모델링의 의미
데이터 모델링은 현실 세계의 업무와 정보를 데이터 구조로 표현하는 과정입니다. 데이터의 의미와 관계를 체계적으로 정의해 일관성 있는 데이터베이스를 설계하는 데 목적이 있습니다.
② 데이터 모델링의 단계
- 개념적 모델링: 업무의 핵심 엔터티와 관계를 파악합니다.
- 논리적 모델링: 속성, 식별자, 관계와 정규화 등을 구체화합니다.
- 물리적 모델링: 실제 DBMS에 구현할 테이블, 컬럼, 인덱스 등을 설계합니다.
③ 엔터티(Entity)
엔터티는 업무에서 관리해야 하는 대상이나 개념입니다. 예를 들어 고객, 주문, 상품 등이 엔터티가 될 수 있습니다.
④ 속성(Attribute)
속성은 엔터티가 가진 특징이나 정보를 의미합니다. 고객 엔터티의 고객번호, 고객명, 가입일 등이 속성의 예입니다.
⑤ 관계(Relationship)
관계는 엔터티 사이의 업무적 연관성을 나타냅니다. 고객과 주문 사이에는 고객이 주문을 생성하는 관계가 존재할 수 있습니다.
⑥ 식별자(Identifier)
식별자는 엔터티의 각 인스턴스를 구별하는 데 사용하는 속성 또는 속성의 조합입니다.
주식별자는 유일성, 최소성, 불변성, 존재성 등의 특성을 중심으로 이해해야 합니다.
⑦ 기본키와 외래키
기본키(Primary Key)는 테이블의 각 행을 고유하게 식별합니다. 외래키(Foreign Key)는 다른 테이블의 키를 참조해 테이블 사이의 관계를 표현합니다.
⑧ 정규화(Normalization)
정규화는 데이터의 중복과 이상 현상을 줄이고 데이터 구조를 체계적으로 정리하는 과정입니다.
- 제1정규형: 속성값의 원자성을 중심으로 이해합니다.
- 제2정규형: 후보키 전체에 대한 완전 함수 종속을 고려합니다.
- 제3정규형: 비주요 속성 간 이행적 함수 종속을 제거합니다.
⑨ 반정규화
반정규화는 성능이나 조회 편의성을 위해 중복을 일부 허용하는 설계 방법입니다. 데이터 정합성 관리 부담이 커질 수 있으므로 정규화와의 장단점을 함께 이해해야 합니다.
⑩ 식별 관계와 비식별 관계
식별 관계에서는 부모 엔터티의 식별자가 자식 엔터티의 기본키 구성에 포함됩니다. 비식별 관계에서는 부모의 식별자를 외래키로 참조하지만 자식의 기본키에는 포함하지 않습니다.
| 핵심 용어 | 의미 | 학습 포인트 |
|---|---|---|
| 엔터티 | 관리 대상 | 인스턴스와 구분 |
| 속성 | 대상의 특징 | 도메인과 연결 |
| 기본키 | 행의 고유 식별 | 유일성·NULL 불가 |
| 외래키 | 참조 관계 표현 | 참조 무결성 |
| 정규화 | 중복과 이상 현상 감소 | 함수 종속 이해 |
3. 2과목 SQL 기본 문법 핵심 정리
① SQL의 주요 분류
SQL 명령어는 기능에 따라 여러 유형으로 구분합니다.
- DML: SELECT, INSERT, UPDATE, DELETE 등 데이터 조회와 변경
- DDL: CREATE, ALTER, DROP, TRUNCATE 등 객체 정의
- DCL: GRANT, REVOKE 등 권한 제어
- TCL: COMMIT, ROLLBACK 등 트랜잭션 제어
분류 방식에 따라 SELECT를 별도의 DQL로 구분하기도 합니다.
② SELECT 기본 문법
SELECT employee_id, employee_name, salary
FROM employees
WHERE salary >= 3000
ORDER BY salary DESC;
위 SQL은 급여가 3000 이상인 직원의 정보를 조회하고 급여를 내림차순으로 정렬합니다.
③ SQL의 논리적 처리 순서
기본적인 SELECT문은 개념적으로 다음 순서로 이해할 수 있습니다.
- FROM 및 JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
이는 결과를 이해하기 위한 논리적 순서이며 실제 DBMS의 물리적 실행 계획과는 다를 수 있습니다.
④ WHERE 조건절
WHERE는 그룹화 이전에 행을 필터링합니다.
SELECT *
FROM employees
WHERE department_id = 10
AND salary > 3000;
⑤ 비교 연산자와 논리 연산자
비교 연산자에는 =, >, <, >=, <=, <> 등이 있습니다. 논리 연산자는 AND, OR, NOT을 사용합니다.
조건식에서 AND와 OR을 함께 사용할 때에는 연산 우선순위를 고려하고 괄호를 사용하는 것이 안전합니다.
⑥ BETWEEN과 IN
SELECT *
FROM employees
WHERE salary BETWEEN 3000 AND 5000;
SELECT *
FROM employees
WHERE department_id IN (10, 20, 30);
BETWEEN은 일반적으로 양쪽 경계값을 포함합니다.
⑦ LIKE 패턴 검색
LIKE는 문자열 패턴을 비교할 때 사용합니다.
%: 길이가 0 이상인 임의의 문자열_: 임의의 문자 한 개
SELECT *
FROM employees
WHERE employee_name LIKE '김%';
⑧ DISTINCT
DISTINCT는 SELECT 결과에서 중복된 행을 제거합니다. 여러 컬럼을 함께 지정하면 해당 컬럼들의 조합을 기준으로 중복을 판단합니다.
⑨ ORDER BY
ORDER BY는 조회 결과를 정렬합니다. ASC는 오름차순, DESC는 내림차순입니다.
NULL 정렬 위치는 DBMS에 따라 차이가 있을 수 있으므로 주의해야 합니다.
⑩ CASE 표현식
SELECT employee_name,
CASE
WHEN salary >= 5000 THEN 'HIGH'
WHEN salary >= 3000 THEN 'MID'
ELSE 'LOW'
END AS salary_grade
FROM employees;
CASE는 조건에 따라 서로 다른 값을 반환할 때 사용합니다.
4. JOIN·GROUP BY·NULL 핵심 개념과 빈출 함정
① INNER JOIN
INNER JOIN은 조인 조건을 만족하는 행만 결과에 포함합니다.
SELECT e.employee_name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.department_id;
② LEFT OUTER JOIN
LEFT OUTER JOIN은 왼쪽 테이블의 모든 행을 유지하고 오른쪽 테이블에서 일치하는 데이터를 결합합니다. 일치하는 데이터가 없다면 오른쪽 컬럼에 NULL이 표시됩니다.
③ ON과 WHERE의 차이
INNER JOIN에서는 일부 조건을 ON과 WHERE 중 어디에 작성해도 같은 결과가 나올 수 있지만, OUTER JOIN에서는 결과가 달라질 수 있습니다.
특히 오른쪽 테이블에 대한 필터를 WHERE에 작성하면 NULL로 확장된 행이 제거되어 OUTER JOIN의 의도와 다른 결과가 나올 수 있습니다.
④ CROSS JOIN
CROSS JOIN은 두 테이블의 모든 행 조합을 생성합니다. 첫 번째 테이블에 3행, 두 번째 테이블에 4행이 있다면 결과는 12행입니다.
⑤ GROUP BY
GROUP BY는 지정한 컬럼값을 기준으로 데이터를 그룹화합니다.
SELECT department_id,
COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;
⑥ HAVING
HAVING은 그룹화된 결과에 조건을 적용합니다.
SELECT department_id,
COUNT(*) AS employee_count
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 3;
⑦ COUNT(*)와 COUNT(컬럼)의 차이
COUNT(*)는 행 수를 계산하고 COUNT(column_name)은 해당 컬럼이 NULL이 아닌 값의 개수를 계산합니다.
이 차이는 SQL 결과 예측 문제에서 특히 중요합니다.
⑧ NULL 비교
NULL은 일반적인 값처럼 = NULL 또는 <> NULL로 비교하지 않습니다. NULL 여부는 IS NULL 또는 IS NOT NULL로 확인합니다.
⑨ NULL과 3값 논리
SQL의 조건 평가에는 TRUE, FALSE, UNKNOWN이 존재합니다. NULL이 포함된 비교는 일반적으로 UNKNOWN이 되며, WHERE는 TRUE로 평가되는 행만 선택합니다.
⑩ 집계 함수와 NULL
SUM, AVG, MIN, MAX, COUNT(컬럼) 등 일반적인 집계 함수는 NULL 값을 제외하고 계산합니다. 단, COUNT(*)는 NULL이 포함된 행도 셉니다.
| 개념 | 핵심 특징 | 주의할 함정 |
|---|---|---|
| INNER JOIN | 일치 행만 반환 | 중복 키에 따른 행 증가 |
| LEFT JOIN | 왼쪽 행 유지 | WHERE 조건으로 행 제거 |
| GROUP BY | 그룹별 집계 | 집계되지 않은 컬럼 선택 |
| HAVING | 그룹 결과 필터 | WHERE와 혼동 |
| COUNT(*) | 전체 행 계산 | COUNT(컬럼)과 혼동 |
5. 서브쿼리와 집합 연산자 핵심 요약
① 서브쿼리란?
서브쿼리는 SQL 문장 내부에 포함된 또 다른 SELECT문입니다. 메인 쿼리의 조건이나 조회 결과를 만드는 데 활용됩니다.
② 단일 행 서브쿼리
단일 행 서브쿼리는 하나의 행을 반환하는 서브쿼리입니다. 반환되는 값의 개수와 비교 연산자의 호환성을 확인해야 합니다.
SELECT employee_name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
③ 다중 행 서브쿼리
여러 행을 반환하는 서브쿼리는 IN, ANY, ALL 등의 연산자와 함께 사용할 수 있습니다.
④ IN 연산자
IN은 값이 지정된 목록이나 서브쿼리 결과에 포함되는지 확인합니다.
SELECT employee_name
FROM employees
WHERE department_id IN (
SELECT department_id
FROM departments
WHERE region = 'SEOUL'
);
⑤ EXISTS
EXISTS는 서브쿼리 결과에 행이 존재하는지를 확인합니다. 서브쿼리의 SELECT 목록에 어떤 상수를 작성했는지는 일반적인 존재 여부 판단에 영향을 주지 않습니다.
⑥ NOT IN과 NULL의 함정
NOT IN의 비교 대상에 NULL이 포함되면 예상과 다른 결과가 나올 수 있습니다. NULL이 포함된 비교는 UNKNOWN으로 평가될 수 있기 때문입니다.
따라서 NOT IN과 NOT EXISTS의 차이를 정확하게 이해하는 것이 중요합니다.
⑦ 상관 서브쿼리
상관 서브쿼리는 내부 쿼리에서 외부 쿼리의 컬럼을 참조하는 형태입니다.
SELECT e.employee_name, e.salary
FROM employees e
WHERE e.salary > (
SELECT AVG(x.salary)
FROM employees x
WHERE x.department_id = e.department_id
);
위 쿼리는 각 직원의 급여를 해당 직원이 속한 부서의 평균 급여와 비교합니다.
⑧ UNION과 UNION ALL
UNION은 중복된 결과 행을 제거하고 UNION ALL은 중복을 유지합니다.
집합 연산을 적용하는 SELECT문은 일반적으로 대응하는 컬럼 수와 데이터 타입의 호환성을 갖춰야 합니다.
⑨ INTERSECT와 EXCEPT
INTERSECT는 공통 결과를, EXCEPT는 첫 번째 결과에만 존재하는 행을 구하는 집합 연산자입니다. 일부 DBMS에서는 EXCEPT 대신 MINUS를 사용합니다.
⑩ 서브쿼리 문제 풀이 순서
먼저 서브쿼리가 반환하는 값과 행 수를 파악하고, 다음으로 메인 쿼리의 비교 연산자와 NULL 여부를 확인해야 합니다.
6. 윈도 함수와 SQL 활용 심화 정리
① 윈도 함수란?
윈도 함수는 행을 하나로 합치지 않고도 행 집합을 기준으로 순위, 누적 합계, 이동 평균 등의 값을 계산할 수 있는 기능입니다.
② OVER 절
윈도 함수는 일반적으로 OVER 절과 함께 사용합니다.
SELECT employee_name,
salary,
RANK() OVER (
ORDER BY salary DESC
) AS salary_rank
FROM employees;
③ PARTITION BY
PARTITION BY는 윈도 함수가 계산할 행 집합을 그룹별로 구분합니다. GROUP BY와 달리 원래 행을 유지할 수 있다는 특징이 있습니다.
④ ROW_NUMBER()
ROW_NUMBER는 정렬 기준에 따라 각 행에 서로 다른 순번을 부여합니다. 동점 행의 순서를 안정적으로 정하려면 추가 정렬 기준을 지정해야 합니다.
⑤ RANK()
RANK는 동점자에게 같은 순위를 부여하고 다음 순위에서 건너뛰는 번호가 발생합니다.
예를 들어 점수가 100, 90, 90, 80이라면 순위는 1, 2, 2, 4입니다.
⑥ DENSE_RANK()
DENSE_RANK는 동점자에게 같은 순위를 부여하지만 다음 순위에서 번호를 건너뛰지 않습니다.
같은 예시의 순위는 1, 2, 2, 3입니다.
⑦ LAG()와 LEAD()
LAG는 이전 행의 값을, LEAD는 다음 행의 값을 참조할 때 사용합니다. 매출의 전월 대비 증감이나 순차적인 데이터 비교에 활용할 수 있습니다.
⑧ 누적 합계
SELECT sale_date,
amount,
SUM(amount) OVER (
ORDER BY sale_date
ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW
) AS cumulative_amount
FROM sales;
위 쿼리는 날짜 순서로 금액의 누적 합계를 계산합니다. 같은 날짜가 여러 행에 존재한다면 결과의 재현성을 위해 추가 정렬 기준을 고려해야 합니다.
⑨ 윈도 프레임
ROWS와 RANGE는 윈도 함수가 계산에 사용할 범위를 정의할 때 사용합니다. ROWS는 물리적인 행 위치를, RANGE는 정렬값에 따른 논리적인 범위를 기준으로 처리합니다.
DBMS마다 지원되는 프레임 문법과 기본값에 차이가 있으므로 명시적인 범위를 지정하는 습관이 도움이 됩니다.
⑩ ROLLUP과 CUBE
ROLLUP은 지정한 컬럼의 계층적인 소계와 총계를 계산하는 데 사용합니다. CUBE는 지정한 컬럼들의 다양한 조합에 대한 집계 결과를 생성합니다.
| 함수 | 특징 | 핵심 구분 |
|---|---|---|
| ROW_NUMBER | 고유 순번 | 동점이어도 다른 번호 |
| RANK | 동점 동일 순위 | 다음 순위 건너뜀 |
| DENSE_RANK | 동점 동일 순위 | 다음 순위 연속 |
| LAG | 이전 행 참조 | 전월·전일 비교 |
| LEAD | 다음 행 참조 | 다음 시점 비교 |
7. SQLD 출제 경향과 대표적인 오답 유형 분석
다음 내용은 최신 회차별 실제 출제 빈도를 집계한 통계가 아니라 SQLD 학습 범위에서 중요도가 높은 개념과 대표적인 문제 유형을 기준으로 정리한 학습 전략입니다.
① 데이터 모델링 용어 구분
엔터티와 인스턴스, 속성, 관계, 식별자 등 비슷한 개념을 구분하는 문제가 학습의 기본입니다. 단순 정의뿐 아니라 사례를 보고 적절한 개념을 판단하는 연습이 필요합니다.
② 정규화 단계 판별
함수 종속 관계를 분석해 어떤 정규화가 필요한지 판단하는 유형에 대비해야 합니다. 제2정규형과 제3정규형의 차이를 설명할 수 있어야 합니다.
③ JOIN 결과 행 수 계산
조인 키가 중복되어 있다면 예상보다 결과 행 수가 많아질 수 있습니다. INNER JOIN과 OUTER JOIN을 각각 직접 계산하는 연습이 중요합니다.
④ WHERE와 HAVING 혼동
WHERE는 그룹화 이전의 행을, HAVING은 그룹화된 결과를 필터링합니다. 집계 함수가 등장하는 문제에서는 이 차이를 확인해야 합니다.
⑤ NULL 관련 오답
NULL을 일반적인 숫자나 문자열처럼 비교하는 실수가 많습니다. IS NULL, COUNT, NOT IN, 3값 논리를 함께 학습해야 합니다.
⑥ 집계 함수 결과 예측
COUNT(*)와 COUNT(컬럼), AVG와 SUM의 NULL 처리 규칙을 정확하게 이해해야 합니다.
⑦ 서브쿼리 결과 해석
서브쿼리가 단일 행을 반환하는지, 여러 행을 반환하는지, NULL을 포함하는지에 따라 메인 쿼리의 결과가 달라질 수 있습니다.
⑧ 윈도 함수 순위 계산
ROW_NUMBER, RANK, DENSE_RANK는 동점 처리 방식이 다릅니다. 간단한 숫자 목록을 놓고 직접 순위를 계산하는 연습이 효과적입니다.
⑨ SQL 문법 오류 판별
GROUP BY 사용 조건, 별칭의 참조 가능 위치, 집합 연산자의 컬럼 호환성 등 문법 규칙을 확인해야 합니다. 일부 세부 동작은 DBMS마다 다를 수 있습니다.
⑩ 문제 풀이 시간 관리
짧은 개념 문제를 빠르게 해결하고 JOIN, 서브쿼리, 윈도 함수처럼 계산이 필요한 문제에 충분한 시간을 확보하는 연습이 좋습니다.
- 틀린 문제의 핵심 개념
- 처음 선택한 오답
- 정답을 판단하는 근거
- 헷갈린 SQL 문법
- NULL 포함 여부
- JOIN 결과 행 수
- 집계 전후 필터링 차이
- DBMS별 문법 차이
- 유사 문제를 다시 풀 때 확인할 사항
- 재학습 날짜와 재풀이 결과
8. SQLD 2주·4주 공부 계획과 실전 연습문제
① 2주 집중 학습 계획
SQL을 어느 정도 사용해 본 경험이 있다면 다음과 같은 단기 복습 계획을 활용할 수 있습니다.
| 기간 | 학습 내용 |
|---|---|
| 1~3일 | 데이터 모델링·정규화·식별자 |
| 4~6일 | SELECT·WHERE·집계·NULL |
| 7~9일 | JOIN·서브쿼리·집합 연산 |
| 10~11일 | 윈도 함수·심화 SQL |
| 12~14일 | 모의문제·오답 정리·최종 복습 |
② 4주 기초 학습 계획
SQL을 처음 공부한다면 개념 이해와 실습을 병행하는 4주 계획이 더 적합할 수 있습니다.
- 1주 차: 데이터베이스 기초와 데이터 모델링
- 2주 차: SELECT, WHERE, GROUP BY, HAVING, NULL
- 3주 차: JOIN, 서브쿼리, 집합 연산, 윈도 함수
- 4주 차: 모의문제 풀이와 오답 노트 반복 학습
③ 실전 연습문제 1: COUNT
다음 테이블에 4개의 행이 있고 BONUS 값이 각각 100, NULL, 200, NULL이라고 가정합니다.
SELECT COUNT(*), COUNT(bonus)
FROM employees;
정답: 4, 2
해설: COUNT(*)는 전체 행 수를 계산하지만 COUNT(bonus)는 NULL이 아닌 값만 계산합니다.
④ 실전 연습문제 2: RANK
점수가 100, 90, 90, 80인 네 행에 RANK 함수를 적용하면 순위는 어떻게 될까요?
정답: 1, 2, 2, 4
해설: RANK는 동점자에게 같은 순위를 부여하고 다음 순위 번호를 건너뜁니다.
⑤ 실전 연습문제 3: CROSS JOIN
A 테이블에 3행, B 테이블에 5행이 있다면 CROSS JOIN의 결과는 몇 행일까요?
정답: 15행
해설: CROSS JOIN은 모든 행의 조합을 생성하므로 3 × 5 = 15행입니다.
⑥ 실전 연습문제 4: HAVING
부서별 직원 수가 3명 이상인 부서만 조회하려면 어떤 절을 사용해야 할까요?
정답: GROUP BY와 HAVING을 사용합니다.
SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 3;
⑦ 실전 연습문제 5: NULL 비교
컬럼이 NULL인 행을 찾기 위한 올바른 조건은 무엇일까요?
정답: WHERE column_name IS NULL
해설: NULL은 일반적인 값과 동일하게 비교하지 않습니다.
⑧ 실전 연습문제 6: OUTER JOIN
A 테이블의 행을 모두 유지하면서 B 테이블의 일치하는 데이터를 결합하려면 어떤 JOIN을 사용할까요?
정답: A LEFT OUTER JOIN B
해설: 왼쪽 테이블의 행을 유지하고 오른쪽 테이블에서 일치하지 않는 부분은 NULL로 확장합니다.
⑨ 실전 연습문제 7: UNION ALL
두 SELECT문의 결과를 합치되 중복된 행을 유지하려면 어떤 연산자를 사용할까요?
정답: UNION ALL
⑩ 실전 연습문제 8: 정규화
복합 후보키의 일부에만 종속되는 비주요 속성을 분리하는 정규화 단계는 무엇일까요?
정답: 제2정규형
해설: 부분 함수 종속을 제거해 완전 함수 종속을 만족하도록 합니다.
9. SQLD 자격증 FAQ 15가지 및 최종 체크리스트
Q1. SQLD는 비전공자도 준비할 수 있나요?
네. 데이터베이스의 기본 개념과 SQL 문법을 단계적으로 공부하면 비전공자도 준비할 수 있습니다.
Q2. SQL을 처음 배우면 어떤 순서로 공부해야 하나요?
SELECT, WHERE, ORDER BY부터 시작해 GROUP BY, JOIN, 서브쿼리, 윈도 함수 순서로 학습하는 것이 좋습니다.
Q3. SQLD 시험에서 데이터 모델링도 중요한가요?
네. 데이터 모델링은 독립적인 학습 영역이므로 SQL 문법과 함께 준비해야 합니다.
Q4. 정규화는 어디까지 공부해야 하나요?
정규화의 목적과 제1·2·3정규형의 차이, 함수 종속과 이상 현상을 중심으로 이해하는 것이 좋습니다.
Q5. SQLD에서 JOIN은 왜 중요한가요?
여러 테이블의 데이터를 결합하는 핵심 기능이며 조인 종류와 조건에 따라 결과 행 수가 달라지기 때문입니다.
Q6. INNER JOIN과 LEFT JOIN의 가장 큰 차이는 무엇인가요?
INNER JOIN은 일치하는 행만 반환하고 LEFT JOIN은 왼쪽 테이블의 행을 유지합니다.
Q7. WHERE와 HAVING은 어떻게 구분하나요?
WHERE는 그룹화 이전의 행을 필터링하고 HAVING은 그룹화된 결과를 필터링합니다.
Q8. COUNT(*)와 COUNT(컬럼)은 같은가요?
아닙니다. COUNT(*)는 전체 행을 계산하고 COUNT(컬럼)은 해당 컬럼이 NULL이 아닌 행을 계산합니다.
Q9. NULL은 0과 같은 의미인가요?
아닙니다. NULL은 값이 없거나 알려지지 않은 상태를 나타내며 숫자 0과 다릅니다.
Q10. 서브쿼리는 반드시 암기해야 하나요?
문법 암기도 필요하지만 서브쿼리가 어떤 값을 반환하고 메인 쿼리에 어떤 영향을 주는지 이해하는 것이 중요합니다.
Q11. RANK와 DENSE_RANK의 차이는 무엇인가요?
RANK는 동점 이후 순위를 건너뛰고 DENSE_RANK는 건너뛰지 않습니다.
Q12. SQLD 공부에 실제 데이터베이스가 필요한가요?
필수라고 단정할 수는 없지만 직접 SQL을 실행해 결과를 확인하면 개념을 이해하는 데 도움이 됩니다.
Q13. 기출문제만 반복해도 될까요?
기출 유형을 익히는 것은 유용하지만 정답 암기에만 의존하면 변형 문제에 대응하기 어려울 수 있습니다.
Q14. SQLD 시험 일정은 어디에서 확인하나요?
데이터자격검정 공식 홈페이지에서 해당 연도의 시험 일정과 접수 안내를 확인해야 합니다.
Q15. 시험 직전에 가장 먼저 복습할 것은 무엇인가요?
자신의 오답 노트를 우선 확인하고 JOIN, NULL, 집계 함수, 서브쿼리, 윈도 함수의 핵심 규칙을 복습하는 것이 좋습니다.
① 데이터 모델링 체크리스트 10가지
- 데이터 모델링의 목적을 설명할 수 있는가?
- 개념·논리·물리 모델링을 구분할 수 있는가?
- 엔터티와 인스턴스를 구분할 수 있는가?
- 속성과 도메인의 의미를 알고 있는가?
- 엔터티 간 관계를 이해하는가?
- 주식별자의 특성을 설명할 수 있는가?
- 기본키와 외래키를 구분할 수 있는가?
- 식별 관계와 비식별 관계를 이해하는가?
- 정규화 단계별 특징을 알고 있는가?
- 반정규화의 장단점을 설명할 수 있는가?
② SQL 기본 문법 체크리스트 10가지
- SELECT문의 기본 구조를 알고 있는가?
- SQL의 논리적 처리 순서를 이해하는가?
- WHERE 조건을 정확하게 작성할 수 있는가?
- AND와 OR의 우선순위를 이해하는가?
- BETWEEN과 IN을 사용할 수 있는가?
- LIKE 패턴을 해석할 수 있는가?
- DISTINCT의 중복 제거 기준을 이해하는가?
- GROUP BY를 사용할 수 있는가?
- HAVING과 WHERE를 구분할 수 있는가?
- ORDER BY의 정렬 방식을 이해하는가?
③ SQL 활용 체크리스트 10가지
- INNER JOIN 결과를 계산할 수 있는가?
- LEFT OUTER JOIN의 NULL 확장을 이해하는가?
- 조인 키 중복에 따른 행 수 증가를 계산할 수 있는가?
- COUNT(*)와 COUNT(컬럼)의 차이를 알고 있는가?
- NULL 비교 규칙을 이해하는가?
- 단일 행·다중 행 서브쿼리를 구분하는가?
- EXISTS와 NOT IN의 차이를 이해하는가?
- UNION과 UNION ALL을 구분하는가?
- ROW_NUMBER와 RANK를 구분하는가?
- PARTITION BY의 역할을 설명할 수 있는가?
④ 시험 직전 체크리스트 10가지
- 최신 공식 출제 범위를 확인했는가?
- 시험 일정과 장소를 확인했는가?
- 신분증 등 준비물 안내를 확인했는가?
- 데이터 모델링 핵심 용어를 복습했는가?
- 정규화 문제를 다시 풀어 보았는가?
- JOIN 결과 행 수 문제를 연습했는가?
- NULL과 집계 함수의 함정을 복습했는가?
- 서브쿼리 문제를 다시 풀어 보았는가?
- 윈도 함수 순위 계산을 확인했는가?
- 오답 노트를 최종 점검했는가?
10. 결론: SQLD 합격을 위한 핵심 요약과 공부 전략
SQLD 자격증을 준비할 때 가장 중요한 것은 데이터 모델링과 SQL 문법을 별개의 암기 과목으로 생각하지 않는 것입니다.
데이터 모델링은 테이블과 관계가 왜 그렇게 설계되었는지를 이해하는 과정이며, SQL은 그 구조에 저장된 데이터를 정확하게 조회하고 처리하는 방법입니다.
따라서 엔터티와 속성, 관계, 식별자, 정규화의 개념을 이해하면 JOIN과 데이터 조회 문제도 보다 쉽게 접근할 수 있습니다.
SQL 기본 문법에서는 SELECT문의 구조와 논리적 처리 순서를 먼저 익히는 것이 좋습니다.
FROM과 JOIN으로 데이터를 구성하고 WHERE로 행을 필터링한 뒤 GROUP BY와 HAVING으로 집계 결과를 처리하는 흐름을 이해하면 복잡한 SQL도 단계적으로 분석할 수 있습니다.
JOIN 문제에서는 조인 종류만 암기하는 것이 아니라 각 테이블의 데이터와 조인 키 중복 여부를 확인해야 합니다.
특히 OUTER JOIN은 ON과 WHERE 조건의 위치에 따라 결과가 달라질 수 있으므로 실제 데이터를 이용한 연습이 중요합니다.
NULL 관련 문제도 주의해야 합니다. NULL은 숫자 0이나 빈 문자열과 같은 개념이 아니며 일반적인 비교 연산에서 UNKNOWN이 발생할 수 있습니다.
COUNT(*)와 COUNT(컬럼)의 차이, NOT IN과 NULL의 관계 등은 짧은 SQL에서도 결과를 크게 바꿀 수 있는 부분입니다.
서브쿼리는 내부 쿼리가 반환하는 결과를 먼저 파악하고 메인 쿼리의 조건을 적용하는 방식으로 접근하는 것이 좋습니다.
윈도 함수는 ROW_NUMBER, RANK, DENSE_RANK의 동점 처리 방식부터 확실하게 이해한 뒤 PARTITION BY와 누적 합계 계산으로 확장하면 효과적입니다.
시험 준비 기간이 짧다면 새로운 교재를 계속 추가하기보다 핵심 개념서와 문제 풀이 자료를 반복해서 학습하는 것이 효율적일 수 있습니다.
틀린 문제는 정답만 표시하지 말고 어떤 개념을 혼동했는지, 어떤 조건을 놓쳤는지 기록해야 합니다.
SQLD 공부의 목표는 문제의 정답을 외우는 것이 아니라 SQL이 어떤 데이터를 반환하는지 스스로 설명할 수 있는 수준에 도달하는 것입니다.
SQLD 핵심 암기 7가지
- 데이터 모델링은 엔터티·속성·관계·식별자·정규화가 기본입니다.
- SQL의 논리적 처리 순서를 이해해야 합니다.
- INNER JOIN과 OUTER JOIN의 결과 차이를 계산할 수 있어야 합니다.
- WHERE는 행을, HAVING은 그룹 결과를 필터링합니다.
- COUNT(*)와 COUNT(컬럼)의 NULL 처리 차이를 기억해야 합니다.
- 서브쿼리는 반환 행 수와 NULL 여부를 먼저 확인합니다.
- RANK와 DENSE_RANK의 동점 처리 차이를 정확히 구분해야 합니다.
공식 참고 자료
- 데이터자격검정 공식 홈페이지 — SQLD 시험 일정, 출제 범위 및 접수 안내
- PostgreSQL 공식 문서 — SQL 문법과 데이터베이스 기능 학습
- MySQL 공식 문서 — SQL 구문 및 함수 참고
- Oracle Database 공식 문서 — Oracle SQL 문법 및 데이터베이스 기능 참고
※ 본 글은 SQLD 시험 준비를 위한 정보성 학습 자료입니다. 예제 SQL은 개념 설명을 위해 작성했으며 실제 실행 결과와 지원 문법은 DBMS에 따라 달라질 수 있습니다. 출제 경향에 대한 설명은 주요 학습 영역을 바탕으로 한 일반적인 분석으로, 2026년 회차별 실제 문항 통계를 의미하지 않습니다. 시험 일정, 출제 기준, 문항 구성, 합격 기준 등은 데이터자격검정 공식 홈페이지의 최신 공고를 기준으로 확인하시기 바랍니다.
'생활 및 지식 관련 정보' 카테고리의 다른 글
| 다이어트 정체기 극복을 위한 간헐적 단식 팁 (0) | 2026.10.15 |
|---|---|
| 저탄고지(키토제닉) 식단 부작용 및 주의사항 (0) | 2026.10.13 |
| 기준금리 인하가 대출금리와 예금금리에 미치는 영향 (0) | 2026.10.11 |
| 미국 연방준비제도(Fed) 금리 결정의 경제적 의미 (0) | 2026.10.09 |
| 환율 상승(원화 약세)이 물가와 주식 시장에 미치는 파급효과 (0) | 2026.10.07 |