woojumanmul

필요한 정보를 검색을 통해
쉽고 빠르게 찾아보세요.

신청 방법, 문제해결, 궁금한 내용을 검색해 보세요.

생활 지원 및 지원금 정보

SQLD 자격증 실기 및 실무 응용 필수 체크리스트|2026년 시험과목·SQL 핵심 문법·기출 유형·실습 공부법 총정리

반응형

 

2026 SQLD · DATABASE · SQL PRACTICE

SQLD 합격을 넘어, 실제 데이터를 조회하고 분석하는 SQL 실력까지

데이터 모델링 → SELECT·JOIN → GROUP BY·서브쿼리 → 윈도우 함수 → 결과 예측 → 실무 SQL 작성

SQLD(SQL 개발자)는 데이터베이스와 SQL에 대한 이해도를 검증하는 국가공인 민간자격입니다. 개발자와 데이터 분석가, 데이터 엔지니어를 준비하는 사람뿐 아니라 업무에서 데이터를 직접 조회하려는 직장인에게도 도움이 될 수 있습니다. 그러나 SQLD를 공부할 때 가장 자주 하는 실수는 SQL 문법의 이름만 외우고 실제 쿼리의 실행 결과를 분석하지 않는 것입니다. 시험에서는 NULL과 집계 함수, 조인으로 발생하는 중복 행, 서브쿼리의 반환값, 윈도우 함수의 순위 계산 등 SQL을 정확히 이해해야 풀 수 있는 문제가 등장합니다. 이번 글에서는 2026년 SQLD 시험 구성과 합격 기준부터 데이터 모델링의 필수 개념, SQL 문법별 체크리스트, 대표 쿼리의 실행 결과, 실무 응용 예제, 4주 학습 계획과 시험 직전 최종 점검표까지 체계적으로 살펴보겠습니다.

핵심 키워드: SQLD 자격증 · SQLD 실기 · SQLD 필기시험 · SQLD 시험과목 · SQLD 합격 기준 · SQLD 기출문제 · SQL JOIN · GROUP BY · 윈도우 함수 · SQL 실무 예제 · 데이터 모델링

먼저 확인하세요: SQLD에는 별도의 실기시험이 없습니다

SQLD는 2026년 기준 별도 코딩 실기시험 없이 객관식 50문항, 90분의 필기형 시험으로 운영됩니다. 이 글의 '실기 및 실무 응용'은 실제 SQL을 작성하고 실행해보는 실습 학습을 의미하며, 공식 실기 평가가 존재한다는 뜻은 아닙니다.

2026년 기준 정보: 시험 구성은 SQLD 관련 교육기관의 자격 안내와 데이터자격검정 공식 확인 경로를 기준으로 정리했습니다. 회차별 원서접수 일정과 운영 세부사항은 변경될 수 있으므로 한국데이터산업진흥원 데이터자격검정 홈페이지에서 최신 공고를 확인하세요. SQL 예제는 학습을 위한 예시이며, 일부 함수와 구문은 Oracle·PostgreSQL·MySQL 등 데이터베이스 제품별로 다르게 작동할 수 있습니다.
시험시간
90분
객관식 필기시험
출제 문항
50문항
데이터 모델링 10 + SQL 40
합격 기준
60점
과목별 40% 미만 과락
실습의 핵심
결과 예측
쿼리 실행 전 결과 생각하기

1. 2026년 SQLD 시험 구조와 합격 기준

① SQLD는 어떤 능력을 평가할까요?

SQLD는 관계형 데이터베이스의 기본 구조를 이해하고 SQL을 활용하여 필요한 데이터를 조회하거나 가공하는 지식을 평가합니다.

시험은 데이터 모델링의 이해와 SQL 기본 및 활용, 두 과목으로 구성됩니다. 데이터 모델링에서는 엔터티와 관계, 식별자, 정규화 등의 개념을 다룹니다. SQL 기본 및 활용에서는 SELECT와 JOIN, 집계, 서브쿼리, 윈도우 함수, 데이터 변경 및 트랜잭션 등을 다룹니다.

② 과목별 문항과 배점

시험과목 문항 수 배점 과락 방지 최소 정답
데이터 모델링의 이해 10문항 20점 4문항
SQL 기본 및 활용 40문항 80점 16문항
합계 50문항 100점 총 30문항 이상 + 과목별 과락 회피

③ 총점 60점만 넘으면 무조건 합격할까요?

아닙니다. SQLD는 총점이 60점 이상이면서 각 과목에서 40% 이상을 획득해야 합니다.

예를 들어 데이터 모델링에서 3문항, SQL 기본 및 활용에서 30문항을 맞혔다면 총 66점이지만 데이터 모델링 과목이 6점이므로 과락으로 불합격입니다.

반대로 데이터 모델링 6문항과 SQL 기본 및 활용 25문항을 맞혔다면 총 62점이며 과목별 과락에도 해당하지 않습니다.

④ SQLD 응시 자격

SQLD는 학력과 전공, 경력에 따른 별도의 응시 자격 제한이 없습니다.

비전공자도 시험에 응시할 수 있지만 데이터베이스의 기초 개념을 이해하지 못한 상태라면 문제 해설만 암기하는 공부가 어려울 수 있습니다.

⑤ SQL 기본 및 활용이 공부 비중의 중심

50문항 중 40문항이 SQL 기본 및 활용에서 출제됩니다.

따라서 전체 공부시간에서 SQL 문법과 실행 결과 분석에 충분한 비중을 두는 것이 합리적입니다.

그러나 데이터 모델링 10문항에서도 최소 4문항을 맞혀야 과락을 피할 수 있으므로 이론 과목을 아예 포기해서는 안 됩니다.

시험 전략의 핵심

데이터 모델링은 과락을 충분히 넘는 수준으로 준비하고, SQL 기본 및 활용에서는 높은 정답률을 목표로 하세요. 시험은 실기형이 아니지만 직접 SQL을 실행해보는 공부가 결과 예측 문제를 이해하는 데 도움이 됩니다.

2. 데이터 모델링 필수 개념 체크리스트

① 엔터티·속성·관계의 의미 이해

엔터티(Entity)는 업무에서 관리해야 할 대상입니다. 예를 들어 고객과 주문, 상품 등이 엔터티가 될 수 있습니다.

속성(Attribute)은 해당 엔터티가 갖는 정보이고, 관계(Relationship)는 엔터티 간의 연관성을 의미합니다.

고객은 고객번호와 이름을 갖고 주문은 주문번호와 주문일시를 갖는다는 식으로 실제 데이터를 떠올려보면 이해하기 쉽습니다.

② 기본키와 외래키를 구분

기본키(Primary Key)는 테이블의 각 행을 식별하는 데 사용합니다. 기본키를 구성하는 열에는 NULL이 허용되지 않으며 키 값은 중복될 수 없습니다.

외래키(Foreign Key)는 다른 테이블의 키를 참조하여 테이블 간 참조 무결성을 유지하는 데 사용합니다.

고객 테이블 : 고객ID(PK), 고객명

주문 테이블 : 주문ID(PK), 고객ID(FK), 주문금액

고객 한 명이 여러 건의 주문을 생성할 수 있으므로 고객과 주문은 일반적으로 1:N 관계를 갖습니다.

③ 정규화와 반정규화

정규화는 데이터의 중복과 이상 현상을 줄이고 데이터 구조를 합리적으로 만드는 설계 과정입니다.

제1정규형은 속성값의 원자성을, 제2정규형은 부분 함수 종속 제거를, 제3정규형은 이행 함수 종속 제거를 중심으로 학습합니다.

반정규화는 조회 성능과 업무 요구 등의 이유로 일부 중복을 의도적으로 허용하는 설계입니다. 무조건 성능이 좋아지는 기법은 아니며 데이터 일관성 유지 비용을 함께 고려해야 합니다.

④ 식별 관계와 비식별 관계

식별 관계에서는 부모 엔터티의 식별자가 자식 엔터티의 기본키 구성에 포함됩니다.

비식별 관계에서는 부모 엔터티의 식별자가 자식 엔터티의 일반 외래키 등으로 포함됩니다.

ERD를 볼 때는 관계선의 표기만 암기하기보다 어떤 열이 기본키를 구성하는지 확인해야 합니다.

⑤ 카디널리티와 선택성

관계에서 1:1, 1:N, N:M을 구분할 수 있어야 합니다.

특히 N:M 관계는 관계형 데이터베이스에서 연결 테이블을 통해 구현하는 사례가 많습니다.

관계가 필수인지 선택인지에 따라 외래키의 NULL 허용 여부와 실제 데이터 구조가 달라질 수 있습니다.

⑥ 데이터 모델링 체크리스트

□ 엔터티·속성·관계의 의미를 설명할 수 있다.

□ 기본키와 외래키의 역할을 구분한다.

□ 식별 관계와 비식별 관계를 구분한다.

□ 1:1·1:N·N:M 관계를 이해한다.

□ 기본키·후보키·대체키의 차이를 설명한다.

□ 제1·2·3정규형을 비교할 수 있다.

□ 삽입·수정·삭제 이상 현상을 설명할 수 있다.

□ 반정규화의 장점과 위험을 구분한다.

□ ERD를 보고 조인할 열을 찾을 수 있다.

3. SELECT·JOIN·GROUP BY 핵심 SQL 문법 정리

① SQL의 논리적인 처리 순서

SELECT 문은 작성한 문장 순서 그대로 처리된다고 이해하면 안 됩니다.

일반적인 논리적 평가 흐름을 다음과 같이 기억하세요.

FROM·JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

실제 DBMS의 물리적 실행 순서는 옵티마이저에 의해 달라질 수 있습니다.

② SELECT와 WHERE

SELECT customer_id, customer_name
FROM customers
WHERE status = 'ACTIVE'
ORDER BY customer_id;

이 쿼리는 상태가 ACTIVE인 고객의 ID와 이름을 조회한 뒤 고객 ID 순서로 정렬합니다.

WHERE에서는 AND와 OR의 우선순위, 비교 연산자와 NULL 처리에 주의해야 합니다.

③ NULL 비교는 IS NULL 사용

SELECT employee_id
FROM employees
WHERE manager_id IS NULL;

NULL은 일반적인 값이 아니므로 manager_id = NULL로 판단하지 않습니다.

또한 NULL = NULL도 참으로 평가되지 않습니다. SQL의 세 값 논리(TRUE, FALSE, UNKNOWN)를 이해해야 합니다.

④ COUNT(*)와 COUNT(열)의 차이

SELECT
 COUNT(*) AS all_rows,
 COUNT(phone_number) AS rows_with_phone
FROM customers;

COUNT(*)는 모든 행을 세지만 COUNT(phone_number)는 해당 열이 NULL인 행을 제외합니다.

SUM과 AVG 등 일반 집계 함수도 NULL 값을 처리하는 규칙을 이해해야 합니다.

⑤ INNER JOIN과 LEFT JOIN

SELECT c.customer_name, o.order_id
FROM customers c
LEFT JOIN orders o
 ON c.customer_id = o.customer_id;

LEFT JOIN은 왼쪽 고객 테이블의 행을 유지하고 연결되는 주문이 없을 경우 주문 관련 열을 NULL로 표시할 수 있습니다.

고객 한 명에게 주문이 세 건이라면 고객 행이 결과에서 세 번 등장할 수 있습니다.

⑥ LEFT JOIN에서 WHERE 조건의 위치

-- 주문이 없는 고객도 유지
SELECT c.customer_name, o.order_id
FROM customers c
LEFT JOIN orders o
 ON c.customer_id = o.customer_id
 AND o.status = 'PAID';

-- 결제 주문이 없는 고객은 결과에서 제외
SELECT c.customer_name, o.order_id
FROM customers c
LEFT JOIN orders o
 ON c.customer_id = o.customer_id
WHERE o.status = 'PAID';

두 쿼리는 동일한 결과를 보장하지 않습니다.

첫 번째는 조건에 맞는 주문이 없어도 고객을 유지합니다. 두 번째는 WHERE에서 주문 상태를 검사하므로 주문이 없는 고객은 제외됩니다.

⑦ GROUP BY와 HAVING

SELECT
 customer_id,
 COUNT(*) AS order_count,
 SUM(amount) AS total_amount
FROM orders
GROUP BY customer_id
HAVING COUNT(*) >= 3
ORDER BY total_amount DESC;

고객별 주문 수와 합계를 계산하고 주문이 세 건 이상인 고객만 표시합니다.

WHERE는 그룹화 전에 행을 필터링하고, HAVING은 그룹화된 결과에 조건을 적용합니다.

⑧ DISTINCT와 중복 제거

DISTINCT는 조회한 열 조합이 같은 결과 행을 제거합니다.

JOIN 후 행 수가 늘어났다고 해서 무조건 DISTINCT를 추가하면 잘못된 조인 관계를 숨길 수 있습니다.

우선 테이블 간 관계와 조인 조건이 맞는지 확인해야 합니다.

SQL 기본 문법의 핵심

NULL 처리와 JOIN으로 늘어나는 행, WHERE·HAVING의 차이, COUNT 함수의 NULL 제외 규칙을 정확하게 이해하세요. SQLD에서는 문법 암기보다 실행 결과를 예측하는 능력이 중요합니다.

4. 서브쿼리·집합 연산·윈도우 함수 필수 개념

① 단일행 서브쿼리와 다중행 서브쿼리

서브쿼리(Subquery)는 SQL 문장 안에 포함된 다른 SQL 문장입니다.

하나의 값을 반환할 것으로 기대하는 경우에는 단일행 비교 연산자를 사용할 수 있습니다. 여러 행을 반환할 수 있는 경우에는 IN과 EXISTS 등 적절한 연산자를 사용해야 합니다.

-- 평균 주문금액보다 큰 주문
SELECT order_id, amount
FROM orders
WHERE amount > (
 SELECT AVG(amount)
 FROM orders
);

② EXISTS와 NOT EXISTS

EXISTS는 서브쿼리가 조건에 맞는 행을 하나 이상 반환하는지 검사합니다.

다음은 주문 이력이 없는 고객을 찾는 예제입니다.

SELECT c.customer_id, c.customer_name
FROM customers c
WHERE NOT EXISTS (
 SELECT 1
 FROM orders o
 WHERE o.customer_id = c.customer_id
);

NOT IN은 서브쿼리 결과에 NULL이 포함되면 예상과 다른 결과를 낼 수 있으므로 주의해야 합니다.

③ UNION과 UNION ALL

UNION은 두 결과 집합에서 중복 행을 제거합니다. 반면 UNION ALL은 중복 행을 유지합니다.

두 결과를 합칠 때는 열 개수와 각 위치의 데이터 타입 호환성을 확인해야 합니다.

④ ROW_NUMBER·RANK·DENSE_RANK 차이

윈도우 함수(Window Function)는 행의 상세정보를 유지하면서 순위와 집계값을 계산할 수 있습니다.

SELECT
 employee_id,
 salary,
 ROW_NUMBER() OVER (ORDER BY salary DESC) AS rn,
 RANK() OVER (ORDER BY salary DESC) AS rnk,
 DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rnk
FROM employees;

급여가 500, 400, 400, 300인 네 행에 대해 순위는 아래처럼 달라집니다. ROW_NUMBER의 동점 행 간 순서는 추가 정렬 기준이 없다면 일정하지 않을 수 있습니다.

급여 ROW_NUMBER RANK DENSE_RANK
500 1 1 1
400 2 2 2
400 3 2 2
300 4 4 3

⑤ PARTITION BY와 누적 집계

SELECT
 department_id,
 employee_id,
 salary,
 SUM(salary) OVER (
 PARTITION BY department_id
 ) AS department_total
FROM employees;

PARTITION BY는 부서별로 계산 범위를 나눕니다. GROUP BY와 달리 각 사원 행을 유지하면서 부서별 급여 합계를 보여줍니다.

⑥ LAG·LEAD와 앞뒤 행 비교

LAG는 정렬된 이전 행의 값을, LEAD는 다음 행의 값을 참조하는 데 사용합니다.

SELECT
 sales_month,
 revenue,
 LAG(revenue) OVER (
 ORDER BY sales_month
 ) AS previous_revenue
FROM monthly_sales;

이전 달 매출을 비교하거나 사용자의 이전 활동을 분석하는 등의 실무 작업에 응용할 수 있습니다.

⑦ ROLLUP·CUBE·GROUPING SETS

이 함수들은 소계와 총계를 계산하는 데 활용됩니다.

ROLLUP은 지정한 열 순서에 따라 단계적 소계를 만들고, CUBE는 다양한 열 조합에 따른 소계를 계산합니다. GROUPING SETS는 필요한 그룹 조합을 지정하는 방식입니다.

집계로 생성된 NULL과 실제 데이터의 NULL을 구별하기 위한 GROUPING 함수도 함께 학습하세요.

⑧ Oracle 전용·표준 SQL 구문의 차이

SQLD를 공부하다 보면 Oracle의 NVL, CONNECT BY, ROWNUM과 다른 DBMS의 COALESCE, 재귀 CTE, LIMIT 등의 유사 기능을 접할 수 있습니다.

동일한 목적의 구문이라도 지원 문법과 처리 순서가 다를 수 있으므로 문제가 지정한 DBMS 기준으로 해석해야 합니다.

고급 SQL의 핵심

서브쿼리의 반환 행 수와 NULL 처리, 집합 연산의 중복 여부, 윈도우 함수별 동점 순위, PARTITION BY와 GROUP BY의 차이를 반드시 확인하세요.

5. SQLD 개념을 실제 업무에 연결하는 실무 SQL 예제

① 실습에 사용할 기본 테이블

온라인 쇼핑몰에서 주문 데이터를 관리한다고 가정해보겠습니다. 아래 SQL은 PostgreSQL에서 실행할 수 있는 형태의 실습용 예제입니다.

CREATE TABLE customers (
 customer_id INTEGER PRIMARY KEY,
 customer_name VARCHAR(100) NOT NULL
);

CREATE TABLE orders (
 order_id INTEGER PRIMARY KEY,
 customer_id INTEGER NOT NULL,
 order_date DATE NOT NULL,
 amount NUMERIC(12,2) NOT NULL,
 status VARCHAR(20) NOT NULL,
 FOREIGN KEY (customer_id)
 REFERENCES customers(customer_id)
);

INSERT INTO customers VALUES
(1, '김민수'),
(2, '이지은'),
(3, '박서준');

INSERT INTO orders VALUES
(101, 1, DATE '2026-10-01', 50000, 'PAID'),
(102, 1, DATE '2026-10-02', 30000, 'PAID'),
(103, 2, DATE '2026-10-03', 25000, 'CANCELLED'),
(104, 2, DATE '2026-10-04', 70000, 'PAID');

② 실습 1: 결제 완료 주문 합계

SELECT
 COUNT(*) AS paid_orders,
 SUM(amount) AS paid_amount
FROM orders
WHERE status = 'PAID';

이 쿼리의 결과는 결제 완료 주문 3건, 총 결제액 150,000원입니다.

취소 주문 25,000원은 WHERE 조건으로 제외됩니다.

③ 실습 2: 고객별 결제 완료 매출

SELECT
 c.customer_id,
 c.customer_name,
 COALESCE(SUM(o.amount), 0) AS paid_amount
FROM customers c
LEFT JOIN orders o
 ON c.customer_id = o.customer_id
 AND o.status = 'PAID'
GROUP BY c.customer_id, c.customer_name
ORDER BY c.customer_id;
고객ID 이름 결제 완료 매출
1 김민수 80,000원
2 이지은 70,000원
3 박서준 0원

주문이 없는 고객도 표시하려면 결제 상태 조건을 JOIN의 ON 절에 두는 것이 중요합니다.

④ 실습 3: 결제 이력이 없는 고객

SELECT c.customer_id, c.customer_name
FROM customers c
WHERE NOT EXISTS (
 SELECT 1
 FROM orders o
 WHERE o.customer_id = c.customer_id
 AND o.status = 'PAID'
);

결과는 고객ID 3번 박서준입니다.

결제 이력이 없는 고객과 주문 자체가 없는 고객은 분석 목적에 따라 달라질 수 있으므로 WHERE 조건을 정확하게 작성해야 합니다.

⑤ 실습 4: 고객별 최근 결제 주문

WITH ranked_orders AS (
 SELECT
 customer_id,
 order_id,
 order_date,
 amount,
 ROW_NUMBER() OVER (
 PARTITION BY customer_id
 ORDER BY order_date DESC, order_id DESC
 ) AS rn
 FROM orders
 WHERE status = 'PAID'
)
SELECT customer_id, order_id, amount
FROM ranked_orders
WHERE rn = 1;

이 쿼리는 고객별로 결제 완료된 주문을 최신 날짜 순으로 정렬하고 첫 번째 행만 조회합니다.

동일 날짜의 주문도 순서가 일정하도록 order_id를 추가 정렬 기준으로 사용했습니다.

⑥ 실무에서는 SQL 정확성뿐 아니라 성능도 중요합니다

데이터가 많아지면 동일한 결과를 만드는 쿼리라도 실행 속도가 달라질 수 있습니다.

필요한 열만 SELECT하고 필터링 조건과 조인 키를 명확히 지정하며, 실행 계획과 인덱스를 확인하는 습관이 도움이 됩니다.

다만 인덱스를 무조건 많이 추가하면 데이터 변경 작업의 비용이 증가할 수 있으므로 실제 사용 패턴에 맞게 판단해야 합니다.

⑦ UPDATE·DELETE 실행 전 주의

실무에서 가장 위험한 SQL 실수 중 하나는 WHERE 조건을 누락한 UPDATE 또는 DELETE입니다.

-- 실제 변경 전 대상부터 조회
SELECT *
FROM orders
WHERE order_id = 103;

-- 트랜잭션 내부에서 변경 확인
BEGIN;

UPDATE orders
SET status = 'PAID'
WHERE order_id = 103;

-- 변경 결과 확인 후 최종 결정
SELECT *
FROM orders
WHERE order_id = 103;

ROLLBACK;

이 예제에서는 테스트를 위해 변경을 취소하는 ROLLBACK을 사용했습니다.

트랜잭션의 동작과 자동 커밋 여부는 DBMS 및 실행 환경에 따라 달라질 수 있으므로, 운영 데이터에서 사용하기 전에 반드시 확인해야 합니다.

실무 응용의 핵심

쿼리를 작성한 뒤에는 결과 행 수와 집계 금액, NULL 처리, 중복 데이터 여부를 검증하세요. 데이터 변경문은 테스트 환경에서 먼저 실행하고 트랜잭션 및 백업 정책을 따르는 것이 중요합니다.

6. SQLD 4주 공부 계획과 모의고사 활용법

SQLD를 처음 준비한다면 이론을 읽은 뒤 바로 문제와 SQL 실습을 연결하는 방식이 좋습니다.

4주 학습 로드맵

1주 차 — 데이터 모델링과 SQL 기초

엔터티·관계·식별자·정규화를 이해하고 SELECT·WHERE·ORDER BY·NULL을 복습합니다. 간단한 테이블을 직접 만들고 조회합니다.

2주 차 — JOIN과 집계

INNER·OUTER JOIN과 GROUP BY, HAVING, 집계 함수, CASE 표현식을 학습합니다. 쿼리를 실행하기 전에 예상 결과 행 수를 기록합니다.

3주 차 — 서브쿼리와 고급 SQL

IN·EXISTS·NOT EXISTS, 집합 연산, 윈도우 함수, ROLLUP·CUBE와 관리 구문을 학습합니다. 복잡한 쿼리를 단계별로 해석합니다.

4주 차 — 모의고사와 오답 복습

90분 동안 50문항을 풀어보고 총점과 과목별 과락 여부를 함께 확인합니다. 자주 틀리는 SQL 결과 예측 문제를 별도로 모아 반복합니다.

모의고사 분석 시 확인할 지표

점검 항목 목표 활용 방법
총점 60점 이상 합격선 확인
1과목 8점 이상 필수 데이터 모델링 과락 예방
2과목 32점 이상 필수 SQL 과락 예방
풀이시간 90분 이내 시간 배분 관리
오답 유형 원인별 기록 집중 보완 영역 선정

실전에서는 정답률만큼 시간 관리도 중요합니다. 한 문제에 지나치게 오래 머무르면 나머지 문제를 풀 시간이 부족해질 수 있습니다.

또한 민간에서 제공하는 복원 문제는 실제 공식 기출 원문과 동일하다고 보장되지 않으므로 출처를 구분해서 활용하세요.

7. SQLD 시험과 실제 업무에서 피해야 할 실수 8가지

① NULL을 일반적인 값처럼 비교하기

NULL 비교에는 IS NULL과 IS NOT NULL을 사용하고 세 값 논리를 이해해야 합니다.

② COUNT(*)와 COUNT(열)을 동일하게 이해하기

COUNT(열)는 해당 열의 NULL을 제외하지만 COUNT(*)는 모든 행을 계산합니다.

③ LEFT JOIN 후 WHERE 때문에 행을 누락하기

오른쪽 테이블의 조건을 WHERE에 두면 매칭되지 않은 왼쪽 행이 제외될 수 있습니다.

④ JOIN으로 증가한 행을 DISTINCT로만 처리하기

JOIN 키와 관계의 카디널리티부터 확인해야 중복의 실제 원인을 해결할 수 있습니다.

⑤ WHERE와 HAVING의 차이를 무시하기

WHERE는 행을, HAVING은 집계된 그룹을 필터링합니다.

⑥ ROW_NUMBER·RANK·DENSE_RANK의 동점 처리를 혼동하기

ROW_NUMBER는 각 행에 고유 순서를, RANK는 건너뛰는 순위를, DENSE_RANK는 연속 순위를 부여합니다.

⑦ UPDATE·DELETE에서 WHERE 누락하기

운영환경에서는 대량 데이터 변경으로 이어질 수 있으므로 실행 전 대상 행을 확인해야 합니다.

⑧ 과목별 과락 기준을 잊어버리기

총점 60점 이상이어도 한 과목이 40% 미만이면 불합격입니다.

SQL 실무에서 추가로 기억할 사항

민감정보와 개인정보가 들어 있는 운영 데이터는 학습용으로 임의로 복제하거나 외부 서비스에 업로드하지 마세요. 반드시 승인된 테스트 데이터와 계정 권한, 조직의 데이터 보호 정책을 따라야 합니다.

8. SQLD FAQ와 시험 직전 최종 체크리스트

Q. SQLD 자격증에 코딩 실기시험이 있나요?

없습니다. 2026년 기준 객관식 50문항의 필기형 시험입니다. 다만 SQL 문장의 실행 결과를 이해해야 하므로 실제 SQL 실습을 병행하면 공부에 도움이 됩니다.

Q. 비전공자도 SQLD를 취득할 수 있나요?

응시 자격 제한이 없어 비전공자도 응시할 수 있습니다. 기초적인 테이블 구조와 SELECT부터 학습하면 좋습니다.

Q. SQLD 합격 기준은 무엇인가요?

100점 만점에 총 60점 이상이어야 하며, 데이터 모델링과 SQL 기본 및 활용에서 각각 40% 이상을 획득해야 합니다.

Q. Oracle만 공부해야 하나요?

관계형 데이터베이스와 SQL의 기본 원리를 먼저 익히는 것이 중요합니다. 다만 Oracle에 특화된 함수와 계층형 질의 등도 학습하고 DBMS별 문법 차이를 구분해야 합니다.

Q. SQLD 공부에는 어느 정도 시간이 필요한가요?

데이터베이스 경험과 SQL 사용 수준에 따라 차이가 큽니다. 4주 계획은 학습 예시이며, 완전 초보자는 기초 개념을 익히는 데 더 많은 시간이 필요할 수 있습니다.

Q. SQLD를 취득하면 실무 SQL을 바로 잘할 수 있나요?

SQLD는 기본 지식의 이해를 보여주는 자격입니다. 실무에서는 실제 테이블 구조 이해와 쿼리 작성, 성능 검증, 데이터 품질과 보안까지 추가 역량이 필요합니다.

SQLD 시험 및 실무 응용 최종 체크리스트

□ SQLD가 별도의 실기시험이 없는 자격임을 알고 있다.

□ 두 시험과목과 각 배점을 정확히 안다.

□ 총점 60점 및 과목별 40% 기준을 확인했다.

□ 엔터티·속성·관계를 설명할 수 있다.

□ 기본키와 외래키를 구분한다.

□ 정규화와 반정규화의 차이를 안다.

□ 1:N과 N:M 관계를 이해한다.

□ SQL의 논리적인 처리 흐름을 안다.

□ SELECT·WHERE·ORDER BY를 작성할 수 있다.

□ NULL 비교와 세 값 논리를 이해한다.

□ COUNT(*)와 COUNT(열)의 차이를 안다.

□ INNER JOIN과 OUTER JOIN을 구분한다.

□ JOIN 후 행 수가 증가하는 원인을 설명한다.

□ WHERE와 HAVING을 구분한다.

□ GROUP BY와 집계 함수를 사용할 수 있다.

□ 단일행·다중행 서브쿼리를 구분한다.

□ IN·EXISTS·NOT EXISTS를 이해한다.

□ UNION과 UNION ALL의 차이를 안다.

□ ROW_NUMBER·RANK·DENSE_RANK를 구분한다.

□ PARTITION BY의 동작을 설명할 수 있다.

□ LAG·LEAD의 결과를 예측할 수 있다.

□ ROLLUP·CUBE·GROUPING SETS를 이해한다.

□ DML·DDL·DCL·TCL을 구분한다.

□ COMMIT과 ROLLBACK의 역할을 안다.

□ Oracle과 다른 DBMS의 구문 차이를 확인한다.

□ 실행 전 SQL 결과 행 수를 예측한다.

□ UPDATE·DELETE 실행 전 WHERE를 확인한다.

□ 50문항을 90분 안에 풀어보았다.

□ 모의고사의 과목별 점수와 오답 원인을 확인했다.

□ 개인정보를 포함한 운영 데이터를 학습용으로 무단 사용하지 않는다.

2026 SQLD 자격증 핵심 요약

시험 형태 필기형 객관식, 별도 실기 없음
시험시간 90분
전체 문항 50문항 / 100점
데이터 모델링 10문항 / 20점
SQL 기본 및 활용 40문항 / 80점
합격 기준 총점 60점 이상 + 과목별 40% 이상
기본 SQL SELECT·JOIN·GROUP BY·NULL
심화 SQL 서브쿼리·윈도우 함수·집합 연산
실무 역량 쿼리 작성·결과 검증·안전한 데이터 변경
추천 학습법 개념 이해 → SQL 실행 → 결과 예측 → 오답 복습

SQLD 자격증을 효과적으로 준비하려면 먼저 시험 구성을 정확하게 이해해야 합니다. SQLD에는 별도 코딩 실기시험이 없으며, 데이터 모델링의 이해와 SQL 기본 및 활용으로 구성된 50문항을 90분 동안 풀이합니다. 합격하려면 총점 60점 이상을 획득하면서 과목별 40% 미만 과락을 피해야 합니다. 데이터 모델링에서는 엔터티와 속성, 관계, 키, 정규화와 반정규화 등의 개념을 이해하는 것이 중요합니다. SQL 기본 및 활용에서는 SELECT와 WHERE, JOIN과 GROUP BY, 서브쿼리, 집합 연산, 윈도우 함수, 데이터 변경과 트랜잭션이 핵심 학습 영역입니다. 특히 SQL 문장을 외우는 것보다 실제로 어떤 결과가 나오는지 예측하는 연습이 도움이 됩니다. LEFT JOIN에서 조건을 WHERE에 두었을 때의 차이, COUNT(*)와 COUNT(열)의 NULL 처리, RANK와 DENSE_RANK의 동점 순위 계산 등은 표를 직접 만들어 확인하면 이해하기 쉽습니다. 또한 SQLD 합격 이후 실무 역량을 키우려면 주문 데이터와 고객 테이블을 활용한 매출 집계, 최근 주문 조회, 구매 이력이 없는 고객 분석 등을 직접 구현해보는 것이 좋습니다. 운영 데이터에 접근할 때는 개인정보 보호와 데이터 변경 안전성도 함께 고려해야 합니다. 결국 SQLD 준비의 가장 효율적인 방법은 기본 개념과 기출 유형을 공부하면서 작은 실습 환경에서 직접 SQL을 작성하고 그 결과를 검증하는 과정을 꾸준히 반복하는 것입니다.

SQLD 시험 및 실무 SQL 공식 참고자료

한국데이터산업진흥원 데이터자격검정: SQL 개발자(SQLD) 시험 안내·원서접수 — SQLD 자격 소개, 시험 일정, 시행 공고와 접수 정보를 확인하는 공식 경로입니다.

세종사이버대학교 · SQLD 자격 안내: SQL 개발자 시험과목 및 합격 기준 — 선택형 50문항, 90분, 과목별 문항 수와 배점 및 응시 자격을 확인할 수 있습니다.

PostgreSQL 공식 문서: SELECT 문과 SQL 구문 — SELECT와 JOIN, GROUP BY, 윈도우 함수 등의 동작을 살펴볼 수 있습니다.

Oracle Database 공식 문서: Oracle Database SQL Language Reference — Oracle SQL의 함수와 분석 함수, 계층형 질의 등 제품별 문법을 확인할 수 있습니다.

MySQL 공식 문서: MySQL Reference Manual — MySQL의 SELECT, 집계 함수, 서브쿼리와 윈도우 함수 구문을 확인할 수 있습니다.

시험 정보 유의사항: 본문은 2026년 10월 기준 SQLD 자격시험 구성에 관한 안내입니다. 시험 일정과 접수기간, 응시료, 운영 세부사항은 공식 공고를 우선 확인해야 합니다. 4주 학습 계획은 예시이며 학습 기간이나 합격을 보장하지 않습니다.

SQL 실습 유의사항: 본문 예제는 학습용 데이터와 일반적인 PostgreSQL 문법을 중심으로 작성했습니다. Oracle, MySQL, SQL Server 등에서는 일부 함수와 구문이 달라질 수 있습니다. 운영 데이터 변경은 승인된 환경과 트랜잭션·백업 정책에 따라 수행해야 합니다.

반응형
이 글 공유하기