코드배정
[SQLD Study Log] 2 과목. SQL 기본과 활용 본문
이번 글은 SQLD 시험 준비 과정에서 학습했던 2과목(SQL 기본과 활용) 내용을 정리한 글이다.
1과목과 마찬가지로 홍쌤의 데이터랩 강의 교재를 기반으로 학습했으며, 단순한 문법 나열보다는 SQL의 의미와 실행 결과 해석, 그리고 시험에서 자주 출제되는 포인트를 중심으로 정리했다.
SQLD 2과목은 단순 암기보다는 쿼리를 읽고 결과를 예측하는 능력이 중요하며, 최근 시험에서는 조인, 서브쿼리, 집계·윈도우 함수처럼 해석 난이도가 높은 문법의 비중이 점점 커지고 있다.
PART 1. SQL 기본
1. 관계형 데이터베이스 개요
데이터베이스는 구조화된 데이터의 집합이며,
DBMS는 이를 저장·관리·제어하는 소프트웨어이다.
관계형 데이터베이스는 데이터를 테이블 형태로 저장하고,
계정(Account)을 통해 접근을 제어하며,
스키마(Schema)를 기준으로 객체를 논리적으로 구분한다.
관계형 데이터베이스는 데이터 무결성과 일관성 유지에 강점이 있으며,
이를 위해 다양한 무결성 제약조건을 사용한다.
ERD는 테이블(엔터티) 간의 관계를 시각적으로 표현한 도구로,
시험과 실무 모두에서 데이터 구조 이해의 핵심이다.
시험 포인트
- DB != DBMS
- 스키마는 논리적 구분 단위
- 무결성 종류 구분(개체 / 참조 / 도메인)
- ERD 해석 문제 출제 빈도 증가
2. SELECT 문
SELECT 문은 테이블로부터 데이터를 조회하기 위한 기본 SQL 문이다.
SQL은 작성 순서와 실행 순서가 다르며,
SELECT 문의 실행 순서는 다음과 같다.
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
SELECT 절에서는 조회할 컬럼을 지정하고,
컬럼 별칭(Alias)을 사용할 수 있다.
뷰(View)는 하나 이상의 테이블을 기반으로 한 가상 테이블이다.
시험 포인트
- 실행 순서와 작성 순서 구분
- 컬럼 별칭은 ORDER BY에서만 사용 가능
- 예약어는 Alias 불가
- 뷰는 실제 데이터 저장 x
3. 함수
함수는 입력값을 받아 특정 연산을 수행한 결과를 반환한다.
함수는 처리 방식에 따라 단일행 함수와 그룹 함수로 구분되며,
입·출력 값의 형태에 따라 문자형, 숫자형, 날짜형, 변환 함수 등으로 나뉜다.
시험 포인트
- 단일행 함수와 그룹 함수는 동시 사용 불가
- 그룹 함수는 WHERE 절에서 사용 불가
4. WHERE 절
WHERE 절은 조건에 맞는 데이터만 조회하기 위해 사용된다.
NULL 값은 일반 비교 연산자로 비교할 수 없으며,
IS NULL, IS NOT NULL을 사용해야 한다.
시험 포인트
- NULL 비교 연산자 주의
- IN / BETWEEN / LIKE 차이
- NOT의 적용 범위
5. GROUP BY / HAVING 절
GROUP BY 절은 데이터를 특정 기준으로 묶을 때 사용한다.
HAVING 절은 그룹 함수 결과를 조건으로 사용할 때 사용된다.
시험 포인트
- WHERE는 그룹화 이전, HAVING은 그룹화 이후
- HAVING은 반드시 GROUP BY 뒤에 위치
6. ORDER BY 절
ORDER BY 절은 조회 결과의 정렬 순서를 지정한다.
기본 정렬은 오름차순이며,
복합 정렬도 가능하다.
DBMS 별로 NULL 정렬 위치가 다르다.
시험 포인트
- Alias 사용 가능
- NULL 정렬 위치(DBMS 차이)
7. 조인
JOIN은 여러 테이블의 데이터를 동시에 조회할 때 사용한다.
조인 방식에는 EQUI JOIN, NON-EQUI JOIN, INNER JOIN, OUTER JOIN, SELF JOIN 등이 있다.
N개의 테이블을 조인하려면 최소 N-1개의 조건이 필요하다.
시험 포인트
- EQUI vs NON-EQUI
- SELF JOIN 구조 이해
- OUTER JOIN 결과 차이
8. 표준 조인
표준 조인은 ANSI SQL 표준에 따른 조인 방식이다.
INNER JOIN, CROSS JOIN, NATURAL JOIN, OUTER JOIN이 있으며,
ON 절과 USING 절의 차이를 구분해야 한다.
시험 포인트
- USING 절에는 테이블 별칭 사용 불가
- NATURAL JOIN은 컬럼 자동 매칭
- OUTER JOIN 종류 구분
PART 2. SQL 활용
9. 서브쿼리
서브쿼리는 SQL 문 안에 포함된 또 다른 SELECT 문이다.
반드시 괄호로 묶어야 하며, 위치와 형태에 따라 다양한 종류가 있다.
시험 포인트
- 단일행: = , 다중행: IN
- EXISTS는 존재 여부만 판단
- 서브쿼리 내 ORDER BY 사용 제한 (순서 보장 X)
10. 집합 연산자
집합 연산자는 여러 SELECT 결과를 하나의 집합으로 결합한다.
UNION(합집합), UNION ALL(합집합), INTERSECT(교집합), MINUS(차집합)가 있다.
시험 포인트
- UNION은 중복 제거
- UNION ALL은 중복 허용
- INTERSECT / MINUS 의미 구분
11. 그룹 함수
그룹 함수는 여러 행을 하나의 결과로 집계한다.
ROLLUP, CUBE, GROUPING SETS를 통해 다양한 집계 형태를 생성할 수 있다.
시험 포인트
- COUNT(*) vs COUNT(컬럼)
- NULL 제외 여부
- GROUP BY FUNCTION 해석
12. 윈도우 함수
윈도우 함수는 행을 유지한 채 집계나 순위 연산을 수행한다.
OVER 절을 사용하며, PARTITION BY와 ORDER BY를 함께 사용할 수 있다.
시험 포인트
- GROUP BY와의 차이
- RANK / DENSE_RANK / ROW_NUMBER 차이
- ROWS vs RANGE
13. TOP N QUERY
TOP N QUERY는 정렬된 결과 중 상위 N개 행을 조회하는 방식이다.
시험 포인트
- ORDER BY → ROWNUM 순서
- ROWNUM 단독 사용 한계
- FETCH 절 문법
14. 계층형 질의
계층형 질의는 하나의 테이블 안에서 행 간의 계층 관계를 표현한다.
시험 포인트
- START WITH / CONNECT BY PRIOR
- LEVEL, CONNECT_BY_ISLEAF 의미
- 부모 → 자식 방향
15. PIVOT / UNPIVOT
PIVOT과 UNPIVOT은 데이터의 행과 열 구조를 변환한다.
PIVOT : LONG → WIDE
UNPIVOT : WIDE → LONG
시험 포인트
- LONG ↔ WIDE 구조 이해
- 결과 컬럼 구조 해석
16. 정규 표현식
정규 표현식은 문자열의 패턴을 일반화하여 처리하는 방식이다.
시험 포인트
- LIKE vs REGEXP
- REGEXP_REPLACE / SUBSTR / LIKE 역할 구분
PART 3. 관리 구문
17. DML (Data Manupulation Language)
DML은 테이블의 데이터를 조작하는 언어이다.
시험 포인트
- DML은 COMMIT / ROLLBACK 대상
- MERGE 동작 개념
18. TCL (Transaction Control Language)
TCL은 트랜잭션의 흐름을 제어한다.
트랜잭션은 원자성(atomicity), 일관성(consistency), 고립성(isolation), 지속성(durability)을 만족해야 한다.
시험 포인트
- COMMIT 이후 ROLLBACK 불가
- SAVEPOINT는 부분 ROLLBACK 기준점
19. DDL (Data Defination Language)
DDL은 데이터베이스 객체를 정의·변경·삭제한다.
DDL 실행 시 자동 COMMIT이 발생한다.
시험 포인트
- DELETE / DROP / TRUNCATE 차이
- TRUNCATE는 ROLLBACK 불가
- FOREIGN KEY 옵션
20. DCL (Data Control Language)
DCL은 데이터베이스 권한을 제어하는 언어이다.
시험 포인트
- 시스템 권한 vs 오브젝트 권한
- WITH GRANT OPTION vs WITH ADMIN OPTION
- ROLE 개념
2과목 시험 후기
2과목은 단순히 문법을 외우는 시험이 아니라, SQL의 실행 흐름과 결과 해석 능력을 요구하는 시험이다.
특히 조인, 서브쿼리, 집계 함수, 윈도우 함수는 단독 개념보다는 다른 문법과 결합된 형태로 출제되었으며, 실행 흐름을 정확히 이해하지 못하면 실수하기 쉬웠다.
실무에서도 SQL을 활용하기 위해서는 단순 조회를 넘어서 복잡한 데이터 구조를 정확히 이해하고 해석하는 능력이 중요하다.
따라서 SQLD 2과목은 시험 대비뿐만 아니라, 실무 SQL 역량의 기초를 다지는 과정으로 접근하는 것이 바람직하다고 생각한다.
'SQL' 카테고리의 다른 글
| ERD(Entity Relationship Diagram) 란? (0) | 2025.09.30 |
|---|---|
| [SQLD Study Log] 1 과목. 데이터 모델링의 이해 (0) | 2025.09.24 |