본문 바로가기
카테고리 없음

정보처리기사 실기 - 8장 SQL 응용

by kik328288 2026. 5. 3.

SQL 응용, 명령어 분류와 부속 질의 정리

정보처리기사 실기 8장 SQL 응용은 데이터베이스를 다루는 가장 보편적인 언어인 SQL의 핵심 문법과 응용 기법을 다루는 영역이다. 단순 조회부터 복잡한 다중 그룹 집계와 분석 함수까지 폭넓게 출제되며, 시험에서는 명령어의 분류, 부속 질의의 종류, 집합 연산자와 그룹 함수, 그리고 윈도우 함수가 매회 반복적으로 출제된다. 본 글은 한 글에 1~2개 핵심 원칙에 따라 이 세 영역을 시험 답안에 직접 활용 가능한 정형화된 형태로 정리한다.

 

SQL 명령어의 4가지 분류

SQL의 모든 명령어는 그 목적에 따라 네 가지 카테고리로 분류된다. 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL), 트랜잭션 제어어(TCL)가 그것이며, 시험에서는 각 카테고리에 속하는 명령어를 정확히 구분해 묻는 문제가 매회 출제된다. 네 가지 분류와 핵심 명령어를 묶어서 외워두는 것이 가장 효과적인 학습법이다.

DDL(Data Definition Language)은 데이터의 구조를 정의하는 언어로, 테이블·뷰·인덱스 같은 데이터베이스 객체를 생성·변경·삭제하는 명령어를 포함한다. 핵심 명령어는 CREATE(객체 생성), ALTER(객체 변경), DROP(객체 삭제), TRUNCATE(테이블 데이터 일괄 삭제), RENAME(객체 이름 변경) 다섯 가지이다. DROP과 TRUNCATE는 모두 데이터를 제거하지만, DROP은 테이블 자체를 제거하고 TRUNCATE는 테이블 구조는 유지한 채 모든 행만 삭제한다는 차이가 있다. DML(Data Manipulation Language)은 데이터를 조작하는 언어로, 우리가 가장 자주 사용하는 SELECT(조회), INSERT(삽입), UPDATE(수정), DELETE(삭제)가 모두 이 분류에 속한다. UPDATE와 DELETE는 WHERE 절을 누락하면 전체 데이터에 적용되어 큰 사고로 이어질 수 있으므로 항상 주의해야 한다.

DCL(Data Control Language)은 데이터에 대한 접근 권한을 제어하는 언어이다. GRANT는 사용자에게 특정 권한을 부여하고, REVOKE는 부여된 권한을 회수한다. 권한은 SELECT·INSERT·UPDATE·DELETE 같은 데이터 조작 권한과 CREATE·DROP 같은 객체 관리 권한을 모두 포함한다. 마지막 TCL(Transaction Control Language)은 트랜잭션을 제어하는 언어로, 여러 SQL 문장을 하나의 논리적 작업 단위로 묶는 메커니즘을 제공한다. COMMIT은 트랜잭션의 변경 사항을 영구적으로 데이터베이스에 반영하고, ROLLBACK은 트랜잭션을 시작 시점 또는 SAVEPOINT 시점으로 되돌린다. SAVEPOINT는 트랜잭션 중간에 되돌아갈 수 있는 지점을 미리 표시해두는 명령어이다. 이 네 가지 분류 가운데 DCL과 TCL을 묶어서 DCL로 분류하기도 하지만, 정보처리기사 시험에서는 TCL을 별도 분류로 다루는 4분류 체계를 표준으로 사용한다.

부속 질의(서브쿼리)와 집합 연산자

부속 질의(Subquery)란 한 SQL 문장 안에 포함된 또 다른 SELECT 문을 의미하며, 흔히 서브쿼리라고도 부른다. 메인 쿼리가 사용할 데이터를 동적으로 조회해 전달하는 역할을 수행하기 때문에, 단일 SELECT만으로 해결하기 어려운 복잡한 조회를 우아하게 표현할 수 있다. 시험에서는 부속 질의의 위치와 반환 행 수에 따른 분류가 자주 출제된다.

부속 질의는 위치에 따라 세 가지로 분류된다. SELECT 절에 사용된 서브쿼리는 스칼라 서브쿼리(Scalar Subquery)로 단일 값을 반환해야 한다. FROM 절에 사용된 서브쿼리는 인라인 뷰(Inline View)로 가상 테이블처럼 동작하며, 메인 쿼리는 인라인 뷰의 컬럼을 참조해 작업한다. WHERE 절에 사용된 서브쿼리는 중첩 서브쿼리(Nested Subquery)로 가장 일반적인 형태이다. 반환 행 수에 따라서는 단일 행 서브쿼리와 다중 행 서브쿼리로 나뉜다. 단일 행 서브쿼리는 비교 연산자(=, >, <, >=, <=, <>)와 함께 사용되며, 다중 행 서브쿼리는 IN·ANY·ALL·EXISTS 같은 다중 행 연산자와 함께 사용된다. ANY는 서브쿼리 결과 중 하나라도 만족하면 참, ALL은 모두 만족해야 참이며, EXISTS는 결과가 하나라도 존재하면 참을 반환한다.

상관 서브쿼리(Correlated Subquery)와 비상관 서브쿼리(Non-correlated Subquery)의 구분도 시험에 자주 나온다. 비상관 서브쿼리는 메인 쿼리와 독립적으로 한 번만 실행되고 결과가 메인 쿼리에 전달되지만, 상관 서브쿼리는 메인 쿼리의 각 행마다 매번 다시 실행되기 때문에 성능에 큰 영향을 미친다. 집합 연산자(Set Operator)는 두 개 이상의 SELECT 결과를 집합으로 결합하는 연산자이다. UNION은 두 결과의 합집합을 중복 제거 후 반환하며, UNION ALL은 중복을 제거하지 않고 그대로 합친다. INTERSECT는 두 결과의 교집합을, MINUS(또는 EXCEPT)는 차집합을 반환한다. 집합 연산자를 사용할 때는 두 SELECT의 컬럼 개수와 데이터 타입이 일치해야 한다는 제약이 있으며, 시험에서는 이 제약을 묻는 문제도 자주 출제된다.

그룹 함수와 윈도우 함수

그룹 함수와 윈도우 함수는 모두 여러 행에 걸친 집계를 수행한다는 공통점이 있지만, 결과를 반환하는 방식이 결정적으로 다르다. 그룹 함수는 여러 행을 하나의 행으로 압축해 반환하는 반면, 윈도우 함수는 각 행에 대한 집계 값을 그대로 행 단위로 반환한다. 시험에서는 두 함수의 차이와 대표 함수의 명칭이 자주 출제되므로 정확히 구분해 외워두어야 한다.

그룹 함수는 일반적으로 GROUP BY 절과 함께 사용되며, COUNT·SUM·AVG·MIN·MAX 같은 기본 집계 함수가 가장 널리 활용된다. GROUP BY로 묶인 그룹에 조건을 적용하려면 WHERE가 아닌 HAVING 절을 사용해야 한다는 점도 자주 출제되는 항목이다. WHERE는 그룹화 이전의 개별 행을 필터링하고, HAVING은 그룹화 이후의 그룹을 필터링한다. 더 고급 그룹 함수로는 ROLLUP·CUBE·GROUPING SETS가 있다. ROLLUP은 GROUP BY로 지정한 컬럼의 계층적 소계를 자동으로 추가해주는 함수로, 부서별 합계와 전체 합계를 한 번의 쿼리로 산출할 수 있다. CUBE는 지정한 컬럼들의 모든 가능한 조합에 대한 소계를 산출하며, 다차원 분석에 유용하다. GROUPING SETS는 사용자가 명시한 그룹 조합에 대해서만 소계를 계산해 ROLLUP과 CUBE보다 유연한 집계를 가능하게 한다.

윈도우 함수(Window Function)는 OLAP(On-Line Analytical Processing) 분석을 위해 표준 SQL에 추가된 강력한 분석 도구이다. 일반 집계 함수와 달리 결과 행을 압축하지 않고 각 행에 대한 분석 값을 추가 컬럼으로 반환하기 때문에, 행 단위 분석과 그룹별 집계를 동시에 수행할 수 있다. 모든 윈도우 함수는 OVER 절과 함께 사용되며, OVER 절에는 PARTITION BY(분할 기준)와 ORDER BY(정렬 기준)를 지정할 수 있다. 윈도우 함수는 크게 네 가지 부류로 나뉜다.

순위 함수에는 RANK·DENSE_RANK·ROW_NUMBER가 있다. RANK는 동순위가 있을 때 다음 순위를 건너뛰며(1, 2, 2, 4), DENSE_RANK는 건너뛰지 않고(1, 2, 2, 3), ROW_NUMBER는 동순위를 인정하지 않는다(1, 2, 3, 4). 행 순서 함수에는 FIRST_VALUE·LAST_VALUE·LAG·LEAD가 있다. FIRST_VALUE와 LAST_VALUE는 각각 윈도우의 첫 행과 마지막 행 값을 반환하고, LAG는 이전 행, LEAD는 다음 행의 값을 반환해 시계열 분석에 유용하다. 그룹 내 비율 함수에는 RATIO_TO_REPORT·PERCENT_RANK·CUME_DIST가 있으며, 각 행이 전체에서 차지하는 비율과 누적 분포를 계산한다. 마지막으로 일반 집계 함수인 SUM·AVG·COUNT 등도 OVER 절과 함께 사용하면 윈도우 함수로 동작하며, 누적 합계나 이동 평균 같은 고급 분석을 한 줄의 SQL로 표현할 수 있게 해준다. 결국 좋은 SQL 작성자는 그룹 함수와 윈도우 함수를 적재적소에 결합해 데이터의 의미를 효율적으로 추출할 줄 아는 사람이라 할 수 있다.


메타 디스크립션: 정보처리기사 실기 8장 SQL 응용의 핵심인 SQL 명령어 4가지 분류(DDL·DML·DCL·TCL), 부속 질의(서브쿼리)와 집합 연산자(UNION·INTERSECT·MINUS), 그리고 그룹 함수(ROLLUP·CUBE)와 윈도우 함수(RANK·LAG·LEAD)를 시험 답안 기준에 맞춰 정리합니다.


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름