SQL DDL과 DCL - 테이블 정의와 권한 관리

DBSQLDDLDCL
읽는데 9분 소요
처음 쓰여진 날: 2026-03-30
마지막 수정일: 2026-04-24
조회수:

요약

SQL의 3대 분류(DDL, DML, DCL)를 알아보고, 테이블을 생성/수정/삭제하는 DDL과 권한을 부여/회수하는 DCL을 정보처리기사 실기 기출문제와 함께 학습합니다.

SQL 분류 핵심 정리

SQL(Structured Query Language)은 데이터베이스1를 다루기 위한 언어입니다. 크게 3가지로 분류됩니다.

분류이름주요 명령어설명
DDL데이터 정의어CREATE, ALTER, DROP, TRUNCATE테이블 구조를 정의/수정/삭제
DML데이터 조작어SELECT, INSERT, UPDATE, DELETE데이터를 조회/추가/수정/삭제
DCL데이터 제어어GRANT, REVOKE사용자 권한2을 부여/회수

DDL (Data Definition Language) - 데이터 정의어

DDL은 테이블, 뷰3 등 데이터베이스 구조(스키마)를 만들고, 바꾸고, 없애는 명령어입니다.

아래는 DDL에서 사용 가능한 4가지 명령어입니다. 각 명령어의 역할과 문법을 순서대로 살펴봅니다.

CREATE TABLE - 테이블 생성

sql
코드 하이라이팅 중...

여기서 컬럼명4은 테이블의 각 열 이름, 데이터타입5은 그 열에 저장할 값의 형식, [제약조건]6은 입력 값에 적용할 규칙입니다. [ ]로 감싸진 항목은 생략 가능한 선택 요소입니다.

자주 사용되는 제약조건:

제약조건설명
PRIMARY KEY기본키 (NULL 불가, 중복 불가, 테이블당 1개)
FOREIGN KEY외래키 (다른 테이블의 기본키를 참조)
NOT NULLNULL7 값 입력 불가
UNIQUE중복 값 입력 불가 (NULL은 허용, 테이블에 여러 개 가능)
CHECK입력 값의 조건 제한
DEFAULT값 미입력 시 자동으로 채울 기본값 설정

예시:

sql
코드 하이라이팅 중...

ALTER TABLE - 테이블 수정

테이블의 구조(컬럼)를 변경할 때 사용합니다. ADD는 새 컬럼을 추가, MODIFY는 기존 컬럼의 데이터타입이나 제약조건을 변경, DROP COLUMN은 컬럼을 삭제합니다.

sql
코드 하이라이팅 중...

DROP - 테이블/뷰 삭제

테이블이나 뷰를 구조째로 삭제합니다. 테이블에 저장된 데이터도 모두 함께 사라집니다.

sql
코드 하이라이팅 중...

CASCADE vs RESTRICT:

CASCADERESTRICT는 삭제 대상 테이블이나 뷰를 다른 테이블(또는 뷰)이 참조하고 있을 때 어떻게 처리할지를 지정합니다. 옵션을 생략하면 RESTRICT가 적용됩니다.

옵션설명
CASCADE해당 테이블이나 뷰를 참조하는 다른 테이블·뷰도 함께 삭제
RESTRICT다른 테이블·뷰가 참조하고 있으면 삭제 거부 (옵션 생략 시 기본 적용)

시나리오 예시:

직원 테이블의 회사코드 컬럼이 회사 테이블의 기본키를 외래키로 참조하고 있는 상황을 가정합니다.

sql
코드 하이라이팅 중...

TRUNCATE - 테이블 데이터 전체 삭제

테이블 구조는 유지하면서 모든 데이터(행)만 삭제합니다.

sql
코드 하이라이팅 중...

TRUNCATE 전/후 비교:

TRUNCATE 전 학생 테이블:

학번이름학년
20241001김철수1
20241002이영희2

TRUNCATE 후 학생 테이블:

학번이름학년
(행 없음)

컬럼 구조(학번, 이름, 학년)는 그대로 남아 있고, 저장된 데이터만 모두 사라집니다.


DCL (Data Control Language) - 데이터 제어어

데이터베이스에는 여러 사용자(DBA, 일반 사용자, 애플리케이션 계정 등)가 접근합니다. 사용자마다 허용할 작업 범위가 다르므로, 권한을 세밀하게 제어할 필요가 있습니다. DCL은 이러한 사용자 권한을 부여하거나 회수하는 명령어입니다.

GRANT - 권한 부여

sql
코드 하이라이팅 중...

권한 종류:

권한설명
SELECT조회 권한
INSERT삽입 권한
UPDATE수정 권한
DELETE삭제 권한
ALL모든 권한

예시:

sql
코드 하이라이팅 중...

WITH GRANT OPTION - 권한 재부여 허용

GRANT 구문 끝에 WITH GRANT OPTION을 붙이면, 권한을 받은 사용자가 다른 사용자에게도 같은 권한을 부여할 수 있게 됩니다.

sql
코드 하이라이팅 중...

예시:

sql
코드 하이라이팅 중...

WITH GRANT OPTION 없이 부여한 경우, USER1은 자신만 SELECT를 수행할 수 있고 다른 사용자에게 권한을 넘길 수 없습니다.

REVOKE - 권한 회수

sql
코드 하이라이팅 중...

예시:

sql
코드 하이라이팅 중...

REVOKE ... CASCADE - 권한 연쇄 회수

WITH GRANT OPTION으로 권한이 여러 사용자에게 퍼진 상황에서, 중간 사용자의 권한을 회수할 때 사용하는 옵션입니다. DROP의 CASCADE와 의미가 비슷합니다 — 이 사용자가 재부여한 권한도 모두 함께 회수됩니다.

옵션설명
CASCADE해당 사용자가 재부여한 다른 사용자의 권한도 함께 연쇄 회수
RESTRICT재부여한 사용자가 있으면 회수 거부 (옵션 생략 시 기본)

시나리오 예시:

DBA가 USER1에게 WITH GRANT OPTION으로 SELECT 권한을 주고, USER1이 USER2에게 SELECT 권한을 재부여한 상태입니다.

sql
코드 하이라이팅 중...

REVOKE GRANT OPTION FOR - 재부여 권한만 회수

사용자 본인의 권한은 유지하고, 다른 사용자에게 재부여할 수 있는 권한만 회수하려면 GRANT OPTION FOR를 사용합니다.

sql
코드 하이라이팅 중...

이 구문 실행 후 USER1은 여전히 학생 테이블을 SELECT할 수 있지만, 다른 사용자에게 SELECT 권한을 넘길 수는 없게 됩니다.


정보처리기사 실기 대비 문제


Footnotes

  1. 데이터를 체계적으로 저장하고 관리하는 저장소. 여러 사람이 동시에 접근할 수 있으며, 데이터 중복과 불일치를 줄이는 것을 목표로 합니다.

  2. 어떤 사용자가 어떤 테이블에 대해 SELECT(조회), INSERT(삽입), UPDATE(수정), DELETE(삭제) 등을 수행할 수 있는지를 결정하는 접근 허가 단위입니다.

  3. 하나 이상의 테이블을 기반으로 만든 가상 테이블입니다. 실제 데이터를 저장하지 않고, 조회 쿼리를 저장해 두었다가 필요할 때 테이블처럼 사용합니다.

  4. 테이블의 각 열(세로 방향)을 나타내는 이름입니다. 예: 학번, 이름, 학년.

  5. 컬럼에 저장할 값의 종류와 형식을 지정합니다. INT는 정수, VARCHAR(n)은 최대 n자의 가변 문자열입니다.

  6. 컬럼에 입력 가능한 값을 제한하는 규칙입니다. PRIMARY KEY, NOT NULL, UNIQUE, CHECK, DEFAULT 등이 있습니다.

  7. 아직 값이 입력되지 않았음을 나타내는 특수한 상태입니다. 0이나 빈 문자열("")과 다르며, "모른다" 또는 "해당 없음"을 의미합니다.


SQL DDL과 DCL - 테이블 정의와 권한 관리 | 정처기 감자