문서 읽는 데 41분 · 26강 · 3과목 · 데이터베이스 구축

DDL과 DCL

목차 20
전체 59강 중 26강 · 3과목 · 데이터베이스 구축

23강이 설계 청사진(E-R), 24강이 키·무결성, 25강이 관계대수였다면, 26강은 그 테이블을 실제로 만들고(DDL) · 다스리는(DCL) SQL 명령어다. SQL 응용 단원의 거의 매회 출제처 — 점수밭은 SQL 4분류 · 제약 조건 6종 · DROP/TRUNCATE/DELETE 구분 · GRANT/REVOKE 문법.

핵심 암기: SQL 4분류 정(DDL)·조(DML)·제(DCL) + 트(TCL) · 제약 6종 NOT NULL·UNIQUE·PK·FK·CHECK·DEFAULT · 기본키 = NOT NULL+UNIQUE·1개 / UNIQUE = NULL 허용·여러 개 · GRANT=TO / REVOKE=FROM · DROP·TRUNCATE=DDL·ROLLBACK❌ / DELETE=DML·ROLLBACK✅


SQL 분류와 DDL 명령어

SQL 4분류 — DDL · DML · DCL · TCL ·SQL 응용·1순위·

[정의] SQL은 관계대수·관계해석을 기초로 한 데이터베이스 질의 언어. 용도에 따라 4종으로 나뉜다. 21강 정조제(정의·조작·제어)에 트랜잭션 제어어(TCL)를 더한 형태다.

[표] SQL 명령어 4분류 (공식 기본서 기준).

분류 풀이 명령어
DDL(데이터 정의어) 구조(스키마) 정의·변경·삭제 CREATE · ALTER · DROP · RENAME · TRUNCATE
DML(데이터 조작어) 데이터 조회·삽입·수정·삭제 SELECT · INSERT · UPDATE · DELETE
DCL(데이터 제어어) 권한 부여·회수 GRANT · REVOKE
TCL(트랜잭션 제어어) 트랜잭션 확정·취소 COMMIT · ROLLBACK · SAVEPOINT

🔑 암기 정(DDL)·조(DML)·제(DCL)·트(TCL). 21강 정조제의 '제'가 권한 제어(DCL), 거기에 트랜잭션 제어(TCL)가 갈라져 나온 구조.

⚠️ 함정 COMMIT·ROLLBACK 분류는 회색지대. 명령어 종류 표 기준은 TCL, 넓은 의미 DCL(제어 기능=보안·무결성·회복·병행수행)로 보면 DCL — 보기에 TCL 선지가 있으면 TCL, 없으면 DCL로 인정. / SELECT를 DDL로 ❌(→ DML) / TRUNCATE를 DML로 ❌(→ DDL·단골).

🎯 빈출 "DDL/DML/DCL 명령어가 아닌 것"·"트랜잭션 제어어에 해당하는 것" — SQL 응용 단원 거의 매회. 명령어 한 개를 엉뚱한 분류에 끼워 오답을 유도한다.

DDL 4명령어와 자동 COMMIT ·DDL 개요·

[정의] DDL(Data Definition Language)은 테이블·인덱스·뷰 같은 DB 객체의 구조를 다룬다. 실행 결과는 데이터 사전(시스템 카탈로그) 에 반영된다(22강).

[표] DDL 4대 명령어.

명령어 기능 한 줄
CREATE 생성 테이블·인덱스·뷰·스키마 새로 만들기
ALTER 변경 기존 테이블 구조 수정(컬럼 추가·수정·삭제)
DROP 삭제 테이블·인덱스·뷰 완전 삭제(구조+데이터)
TRUNCATE 초기화 데이터만 전체 삭제(구조는 유지)

🔑 암기 DDL은 실행 즉시 자동 COMMIT → ROLLBACK 불가. 한 번 DROP·TRUNCATE 하면 트랜잭션으로 되돌릴 수 없다.

⚠️ 함정 "DDL은 ROLLBACK으로 되돌릴 수 있다" ❌(→ 자동 COMMIT이라 불가·★1순위) / "TRUNCATE는 구조까지 삭제" ❌(→ 데이터만, 구조는 유지·구조까지는 DROP).

🎯 빈출 자동 COMMIT 특성·DDL 명령어 분류. 거의 매회.

💡 보충 22강 데이터 사전 회수 — DDL을 실행하면 DBMS가 시스템 카탈로그를 자동 갱신한다(사용자가 직접 갱신 ❌).


테이블 생성 — CREATE TABLE과 제약 조건

CREATE TABLE 문법과 데이터 타입 ·CREATE TABLE·

[정의] 새 테이블을 만드는 명령어. 컬럼명·데이터 타입·제약 조건을 함께 정의한다.

SQL
CREATE TABLE employee (
    emp_id      VARCHAR(10)   NOT NULL,
    emp_name    VARCHAR(50)   NOT NULL,
    dept_code   VARCHAR(8),
    salary      INT           DEFAULT 3500,
    PRIMARY KEY (emp_id),
    FOREIGN KEY (dept_code) REFERENCES department(dept_code)
);

[표] 주요 데이터 타입.

타입 설명 쓰임
CHAR(n) 고정 길이 문자열 코드·번호
VARCHAR(n) 가변 길이 문자열 이름·주소
INT 정수 나이·수량
DECIMAL(p,s) 소수점 숫자 금액·가격
DATE · DATETIME 날짜 · 날짜+시간 등록일·주문시각

🔑 암기 컬럼 레벨(emp_id VARCHAR(10) NOT NULL)과 테이블 레벨(PRIMARY KEY (emp_id)) 두 방식으로 제약을 건다. 복합 키는 테이블 레벨로만 가능.

🎯 빈출 문법 빈칸·제약 조건 위치. 보통.

제약 조건 ① — NOT NULL · UNIQUE · CHECK · DEFAULT ·제약 조건·

[정의] 제약 조건(Constraint)은 잘못된 데이터 입력을 DB 레벨에서 막는 규칙. 24강 도메인 무결성을 SQL로 구현한 것이 CHECK다.

[표] 4종 제약.

제약 역할 핵심
NOT NULL NULL 입력 금지 반드시 값이 있어야 하는 컬럼
UNIQUE 중복 값 금지 NULL은 허용(NULL끼리는 중복으로 안 봄)·여러 개 설정 가능
CHECK 값의 범위·조건 제한 CHECK (salary > 0) · CHECK (rating BETWEEN 1 AND 5) — 도메인 무결성
DEFAULT 기본값 지정 값 미입력 시 자동 대입(DEFAULT 3500)

🔑 암기 UNIQUE는 NULL 허용·테이블당 여러 개. 이 점이 PRIMARY KEY와 갈린다(PK는 NULL 금지·1개).

⚠️ 함정 "UNIQUE는 NULL을 허용하지 않는다" ❌(→ 허용) / "CHECK는 무결성과 무관" ❌(→ 도메인 무결성 구현).

🎯 빈출 UNIQUE의 NULL 허용·CHECK = 도메인 무결성. 보통.

제약 조건 ② — PRIMARY KEY · FOREIGN KEY · FK 4옵션 ·제약 조건·1순위·

[정의] PRIMARY KEY(기본키) = 각 행을 유일하게 식별(24강 개체 무결성). FOREIGN KEY(외래키) = 다른 테이블의 PK를 참조(24강 참조 무결성).

[표] 두 키 비교 (24강 슈후기대외·개참도 회수).

NULL 중복 개수 무결성
PRIMARY KEY 테이블당 1개(복합 키 가능) 개체 무결성
FOREIGN KEY 여러 개 참조 무결성

[표] FK 위반 시 동작 — 참조 4옵션(24강 회수). ON DELETE · ON UPDATE 뒤에 붙인다.

옵션 동작
RESTRICT 참조 중이면 변경·삭제 거부(기본값)
CASCADE 부모 삭제·수정 시 자식도 연쇄 삭제·수정
SET NULL 부모 삭제 시 자식 FK를 NULL
SET DEFAULT 부모 삭제 시 자식 FK를 기본값으로

🔑 암기 기본키 = NOT NULL + UNIQUE 자동·테이블당 1개. 외래키 = 다른 PK 참조·NULL ✅·여러 개. FK 4옵션 = RESTRICT(기본)·CASCADE·SET NULL·SET DEFAULT.

⚠️ 함정 "기본키는 테이블당 여러 개 가능" ❌(→ 1개, 단 복합 키로 여러 컬럼 묶기는 가능·★1순위) / "외래키는 NULL 불가" ❌(→ 가능, NULL 금지는 기본키만) / "기본키에 NULL 가능" ❌.

🎯 빈출 PK 1개·PK = NOT NULL+UNIQUE·FK NULL 허용. 거의 매회.

💡 보충 기본키는 자동으로 인덱스가 생긴다. 24강 student·course·enrollment 예제의 FOREIGN KEY (학번) REFERENCES student(학번)가 바로 이 참조 무결성의 SQL 구현.

제약 조건 6종 총정리 ·제약 조건·1순위·

[표] CREATE TABLE 제약 조건 한눈 정리.

제약 역할 NULL 중복 개수
NOT NULL NULL 금지 여러 개
UNIQUE 중복 금지 여러 개
PRIMARY KEY 기본키(NOT NULL+UNIQUE) 1개
FOREIGN KEY 외래키·참조 무결성 여러 개
CHECK 값 범위·조건 여러 개
DEFAULT 기본값 여러 개

🔑 암기 세 줄로 압축 — ① PRIMARY KEY = NOT NULL + UNIQUE 동시 ② UNIQUE는 NULL 허용(PK와의 차이) ③ PK만 테이블당 1개, 나머지는 여러 개.

⚠️ 함정 PK와 UNIQUE의 NULL·개수 속성을 뒤바꿔 출제. "UNIQUE는 1개만" ❌ / "PK는 NULL 허용" ❌.

🎯 빈출 6종 속성 매칭. 거의 매회.


테이블 변경·삭제와 기타 DDL

ALTER TABLE — 구조 변경 ·ALTER·

[정의] 기존 테이블의 구조를 바꾸는 명령어. 컬럼 추가·수정·삭제 3가지가 핵심.

SQL
ALTER TABLE employee ADD email VARCHAR(100);          -- 컬럼 추가
ALTER TABLE employee MODIFY emp_name VARCHAR(100);    -- 컬럼 수정(MySQL)
ALTER TABLE employee DROP COLUMN fax_number;          -- 컬럼 삭제

🔑 암기 ADD(추가) · MODIFY 또는 ALTER COLUMN(수정) · DROP COLUMN(삭제). 제약 조건 추가는 ADD CONSTRAINT chk_salary CHECK (...).

⚠️ 함정 컬럼 삭제는 DROP COLUMN(테이블 자체 삭제 DROP TABLE과 구분) / 수정 키워드는 DBMS별로 MODIFY(MySQL)·ALTER COLUMN(SQL Server)으로 갈림.

🎯 빈출 ADD/MODIFY/DROP COLUMN 용도 구분. 보통.

DROP · TRUNCATE · DELETE 구분 ·삭제 명령·1순위·

[정의] "지우는" 명령어 3종. 분류와 ROLLBACK 가능 여부가 시험 핵심 — DROP·TRUNCATE는 DDL, DELETE만 DML이다.

[표] 3종 비교.

구분 DROP TRUNCATE DELETE
분류 DDL DDL DML
삭제 대상 구조 + 데이터 데이터만(구조 유지) 데이터만(구조 유지)
WHERE 조건 불가 불가 가능
ROLLBACK 불가 불가 가능
속도 빠름 가장 빠름 느림(행마다 로그)

🔑 암기 구조까지 → DROP / 데이터 전체 초기화 → TRUNCATE / 조건부·되돌리기 가능 → DELETE. DELETE만 DML·ROLLBACK ✅·WHERE ✅.

⚠️ 함정 "DELETE는 DDL" ❌(→ DML·★1순위) / "TRUNCATE는 ROLLBACK 가능" ❌(→ DDL이라 불가) / "DROP 실행 후 ROLLBACK으로 복구" ❌(→ 자동 COMMIT이라 불가).

🎯 빈출 DROP↔TRUNCATE↔DELETE 자리 바꿔치기. 거의 매회.

CREATE INDEX · CREATE VIEW ·기타 DDL·

[정의] CREATE INDEX = 검색 속도를 높이는 인덱스 생성. CREATE VIEW = 하나 이상의 테이블 기반 가상 테이블(뷰) 생성.

SQL
CREATE INDEX idx_emp_name ON employee(emp_name);

CREATE VIEW dev_employees AS
    SELECT emp_id, emp_name FROM employee WHERE dept_code = 'DEV';

[표] 두 객체의 시험 포인트.

객체 핵심 함정
INDEX SELECT↑ / INSERT·UPDATE·DELETE↓ · PK는 자동 인덱스 "인덱스 많을수록 항상 빠름" ❌
VIEW 가상 테이블·물리 저장 ❌·데이터 보안·쿼리 단순화 "뷰는 독자 인덱스를 가진다" ❌(★1순위)

🔑 암기 뷰는 가상 테이블 — 자체 인덱스 ❌(기본 테이블 인덱스를 빌려 씀). 인덱스는 SELECT는 빠르게, 변경(INSERT·UPDATE·DELETE)은 느리게.

⚠️ 함정 "뷰가 디스크에 데이터를 물리적으로 저장" ❌(→ 정의문만 보관·조회 시 재실행) / "뷰는 자체 인덱스 보유" ❌(반복 출제 단골 선지).

🎯 빈출 뷰의 특징(독자 인덱스 ❌)·인덱스 트레이드오프. 거의 매회.

💡 보충 인덱스 자료구조(B+Tree 등)·뷰의 4대 특성은 30강 고급 데이터베이스에서 본격. 26강은 생성 문법까지만.


DCL — 권한 제어

DCL 개요와 GRANT — 권한 부여 ·DCL·1순위·

[정의] DCL(Data Control Language)은 DB의 보안·권한을 제어. 주로 DBA가 사용한다(22강). GRANT = 사용자에게 권한 부여.

SQL
GRANT 권한 ON 테이블 TO 사용자 [WITH GRANT OPTION];

GRANT SELECT, INSERT ON employee TO user_dev;   -- 조회·삽입 권한
GRANT ALL ON employee TO user_admin WITH GRANT OPTION;

[표] 주요 권한·옵션.

키워드 의미
SELECT · INSERT · UPDATE · DELETE 작업별 권한
ALL (= ALL PRIVILEGES) 모든 권한
PUBLIC 모든 사용자에게 부여
WITH GRANT OPTION 받은 권한을 다른 사용자에게 재부여 가능

🔑 암기 GRANT는 TO(~에게). 문법 = GRANT 권한 ON 테이블 TO 사용자.

⚠️ 함정 "GRANT ... FROM ..." ❌(→ TO·GRANT는 부여라 '~에게'·★1순위).

🎯 빈출 GRANT 문법 빈칸(TO)·WITH GRANT OPTION 의미. 거의 매회.

💡 보충 WITH GRANT OPTION으로 재부여한 권한은, 부여자의 권한을 회수하면 함께 회수된다(다음 카드 CASCADE와 연결).

REVOKE — 권한 회수 ·DCL·1순위·

[정의] REVOKE = 사용자의 권한 회수. CASCADE·RESTRICT 옵션으로 하위 권한 처리 방식을 정한다.

SQL
REVOKE 권한 ON 테이블 FROM 사용자 [CASCADE | RESTRICT];

REVOKE SELECT ON employee FROM user_dev;
REVOKE ALL ON employee FROM user_admin CASCADE;   -- 하위 권한도 연쇄 회수

[표] CASCADE vs RESTRICT.

옵션 동작
CASCADE 그 사용자가 재부여한 하위 권한도 함께 연쇄 회수
RESTRICT 재부여한 권한이 있으면 회수 거부(오류)

🔑 암기 REVOKE는 FROM(~로부터). CASCADE = 연쇄 회수 / RESTRICT = 하위 있으면 거부.

⚠️ 함정 "REVOKE ... TO ..." ❌(→ FROM) / "CASCADE는 하위 권한 유지" ❌(→ 연쇄 회수) / "RESTRICT = CASCADE" ❌(→ 정반대·RESTRICT는 거부).

🎯 빈출 REVOKE FROM·CASCADE 의미. 거의 매회.

GRANT vs REVOKE 총정리 ·DCL·1순위·

[표] 권한 제어 두 명령어 대비.

구분 GRANT REVOKE
역할 권한 부여 권한 회수
전치사 TO(~에게) FROM(~로부터)
특수 옵션 WITH GRANT OPTION CASCADE / RESTRICT
PUBLIC 모두에게 부여 모두에게서 회수
SQL
GRANT  권한 ON 테이블 TO   사용자 [WITH GRANT OPTION];
REVOKE 권한 ON 테이블 FROM 사용자 [CASCADE | RESTRICT];

🔑 암기 GRANT는 TO, REVOKE는 FROM. 이 한 줄이 26강 DCL 출제분의 핵심.

⚠️ 함정 전치사 뒤바꿈(GRANT FROM / REVOKE TO) — 매회 등장하는 1순위 함정.

🎯 빈출 TO/FROM 빈칸 채우기. 거의 매회.


TCL — 트랜잭션 제어

COMMIT · ROLLBACK · SAVEPOINT ·TCL·

[정의] TCL(Transaction Control Language)은 트랜잭션의 변경 사항을 확정(COMMIT) 하거나 취소(ROLLBACK) 한다. SAVEPOINT는 부분 롤백용 저장점.

[표] 트랜잭션 제어 3종.

명령어 역할 핵심
COMMIT 변경 사항 영구 저장 COMMIT 이후 ROLLBACK 불가
ROLLBACK 변경 사항 취소·복구 COMMIT 이전 변경만 되돌림
SAVEPOINT 저장점 설정(부분 롤백) ROLLBACK TO SAVEPOINT 저장점명

[흐름] 트랜잭션 진행.

텍스트
 트랜잭션 시작
     │
       DML 실행(INSERT·UPDATE·DELETE)
     │
     ├─ SAVEPOINT sp1 설정 ── 부분 롤백 지점
     │
       DML 실행
     │
     ├─ 오류  ROLLBACK (또는 ROLLBACK TO sp1)
     └─ 성공  COMMIT (영구 저장)

🔑 암기 COMMIT = 확정 / ROLLBACK = 취소 / SAVEPOINT = 부분 롤백 지점. DDL은 자동 COMMIT이라 ROLLBACK 불가.

⚠️ 함정 "COMMIT 이후에도 ROLLBACK 가능" ❌(→ 불가) / "DDL은 ROLLBACK 가능" ❌(→ 자동 COMMIT·불가) / 분류 — 명령어 종류 표 기준 COMMIT·ROLLBACK은 TCL(단 넓은 의미 DCL로 보는 교재도 있음·1번 카드 회색지대 참조).

🎯 빈출 COMMIT/ROLLBACK 특성·ROLLBACK 불가 상황(DDL 실행 후·COMMIT 후). 보통.

💡 보충 트랜잭션의 ACID 특성·로그 기반 회복(REDO/UNDO)은 29강 트랜잭션·회복·병행 제어에서 본격. 26강은 명령어 문법까지만.


기출 다지기

[기출 1 출제] SQL의 DDL(Data Definition Language) 명령어가 아닌 것은?

  • ① CREATE
  • ② ALTER
  • ③ DROP
  • ④ SELECT
정답 및 해설 보기

정답 ④ SELECT

DDL = CREATE · ALTER · DROP · RENAME · TRUNCATE. 구조를 정의하는 명령어다.

선지 분류 판정
① CREATE DDL 맞음
② ALTER DDL 맞음
③ DROP DDL 맞음
SELECT DML(데이터 조작어) 정답

🔑 SELECT는 데이터를 조회하는 DML — 구조를 정의하는 DDL이 아니다.

[기출 2 출제] 다음 SQL의 ( ) 안에 들어갈 키워드로 옳은 것은?

SQL
GRANT SELECT ON employee ( ) user_hong;
  • ① FROM
  • ② INTO
  • ③ TO
  • ④ FOR
정답 및 해설 보기

정답 ③ TO

GRANT 문법 = GRANT 권한 ON 테이블 TO 사용자.

선지 판정
① FROM REVOKE에서 사용 → ❌
② INTO INSERT INTO에서 사용 → ❌
TO GRANT(부여)는 '~에게' → 정답
④ FOR SQL 권한 문법에 없음 → ❌

🔑 GRANT는 TO, REVOKE는 FROM — 매회 나오는 1순위 함정.

[기출 3 출제] 뷰(View)의 특징으로 옳지 않은 것은?

  • ① 뷰는 자체적으로 인덱스를 가진다.
  • ② 데이터 보안에 유용하다.
  • ③ 논리적 독립성을 제공한다.
  • ④ 복잡한 쿼리를 단순화한다.
정답 및 해설 보기

정답 ①

선지 판정
자체 인덱스 보유 정답(틀림) — 뷰는 가상 테이블이라 독자 인덱스 ❌
② 데이터 보안 옳음(민감 컬럼 숨기기)
③ 논리적 독립성 옳음
④ 쿼리 단순화 옳음

🔑 "뷰는 자체 인덱스를 가진다" → 항상 틀린 선지(반복 출제). 뷰는 기본 테이블의 인덱스를 빌려 쓴다.

[기출 4 출제] PRIMARY KEY에 대한 설명으로 옳지 않은 것은?

  • ① PRIMARY KEY로 지정된 속성은 NULL 값을 가질 수 없다.
  • ② PRIMARY KEY는 UNIQUE와 NOT NULL을 모두 만족한다.
  • ③ 하나의 테이블에 PRIMARY KEY는 여러 개 설정할 수 있다.
  • ④ 두 개 이상의 속성으로 복합 기본키를 구성할 수 있다.
정답 및 해설 보기

정답 ③

선지 판정
① NULL 불가 옳음(개체 무결성)
② UNIQUE + NOT NULL 옳음
테이블당 여러 개 정답(틀림) — PK는 테이블당 1개
④ 복합 기본키 옳음(여러 컬럼 묶기)

🔑 PRIMARY KEY = 테이블당 1개(복합 키로 여러 컬럼은 가능) / UNIQUE = 여러 개 가능.

[기출 5 출제] DROP TABLE과 DELETE의 차이로 옳지 않은 것은?

  • ① DROP TABLE은 테이블 구조와 데이터를 모두 삭제한다.
  • ② DELETE는 WHERE 조건으로 특정 행만 삭제할 수 있다.
  • ③ DROP TABLE 실행 후 ROLLBACK으로 되돌릴 수 있다.
  • ④ DELETE는 DML, DROP은 DDL 명령어다.
정답 및 해설 보기

정답 ③

선지 판정
① 구조+데이터 삭제 옳음
② WHERE 조건부 삭제 옳음
DROP 후 ROLLBACK 가능 정답(틀림) — DDL은 자동 COMMIT → ROLLBACK 불가
④ DELETE=DML / DROP=DDL 옳음

🔑 DDL(CREATE·ALTER·DROP·TRUNCATE)은 자동 COMMIT이라 ROLLBACK 불가. DELETE만 DML·ROLLBACK ✅.

[기출 6 출제] 다음 SQL에 대한 설명으로 옳은 것은?

SQL
REVOKE SELECT ON employee FROM user_a CASCADE;
  • ① user_a에게 SELECT 권한을 부여한다.
  • ② user_a가 다른 사용자에게 부여한 권한은 유지된다.
  • ③ user_a의 권한과 user_a가 부여한 하위 권한도 모두 회수된다.
  • ④ RESTRICT 옵션과 동일한 효과를 가진다.
정답 및 해설 보기

정답 ③

REVOKE ... FROM user_a CASCADE = user_a로부터 회수 + 하위 권한 연쇄 회수.

선지 판정
① 권한 부여 GRANT의 역할 → ❌
② 하위 권한 유지 CASCADE는 연쇄 회수 → ❌
하위 권한도 모두 회수 정답 — CASCADE의 정확한 의미
④ RESTRICT와 동일 RESTRICT는 하위 있으면 회수 거부 → 정반대 → ❌

🔑 CASCADE = 연쇄 회수 / RESTRICT = 하위 있으면 거부.

[기출 7 출제] 트랜잭션 제어어(TCL)에 해당하는 명령어로만 묶인 것은?

  • ① GRANT, REVOKE
  • ② CREATE, ALTER, DROP
  • ③ COMMIT, ROLLBACK, SAVEPOINT
  • ④ SELECT, INSERT, UPDATE
정답 및 해설 보기

정답 ③ COMMIT, ROLLBACK, SAVEPOINT

선지 분류 판정
① GRANT, REVOKE DCL(권한 제어)
② CREATE, ALTER, DROP DDL(정의)
COMMIT, ROLLBACK, SAVEPOINT TCL(트랜잭션 제어) 정답
④ SELECT, INSERT, UPDATE DML(조작)

🔑 보기에 DCL과 TCL이 함께 있으면 COMMIT·ROLLBACK은 TCL. 단 TCL 선지가 없고 넓은 의미 DCL로 출제되면 DCL로 인정(회색지대).

[기출 8 출제] 테이블 제약 조건에 대한 설명으로 옳지 않은 것은?

  • ① UNIQUE 제약 컬럼은 NULL 값을 허용한다.
  • ② FOREIGN KEY 컬럼은 NULL 값을 가질 수 없다.
  • ③ CHECK는 컬럼 값의 범위를 제한한다.
  • ④ DEFAULT는 값 미입력 시 기본값을 대입한다.
정답 및 해설 보기

정답 ②

선지 판정
① UNIQUE는 NULL 허용 옳음
FOREIGN KEY는 NULL 불가 정답(틀림) — 외래키는 NULL 가능(금지는 기본키만)
③ CHECK 값 범위 제한 옳음(도메인 무결성)
④ DEFAULT 기본값 대입 옳음

🔑 NULL을 금지하는 키는 기본키만. 외래키는 '관계 미결정'을 NULL로 표현한다(24강).


한 장 요약

영역 핵심 암기팁
SQL 4분류 DDL(정의)·DML(조작)·DCL(제어)·TCL(트랜잭션) 정·조·제·트
DDL 4종 CREATE·ALTER·DROP·TRUNCATE · 자동 COMMIT DDL은 ROLLBACK ❌
제약 6종 NOT NULL·UNIQUE·PK·FK·CHECK·DEFAULT PK=NN+UQ·1개 / UNIQUE=NULL 허용·여러 개
PK vs FK PK = NULL❌·1개 / FK = NULL✅·여러 개·다른 PK 참조 NULL 금지는 기본키만
FK 4옵션 RESTRICT(기본)·CASCADE·SET NULL·SET DEFAULT 부모 삭제 시 자식 처리
삭제 3종 DROP(구조+데이터)·TRUNCATE(데이터)·DELETE(조건부) DELETE만 DML·ROLLBACK✅·WHERE✅
INDEX·VIEW INDEX: SELECT↑변경↓ / VIEW: 가상·독자 인덱스❌ 뷰 자체 인덱스 ❌(1순위)
GRANT/REVOKE GRANT=부여·TO / REVOKE=회수·FROM GRANT는 TO, REVOKE는 FROM
권한 옵션 WITH GRANT OPTION(재부여) / CASCADE(연쇄 회수)·RESTRICT(거부) CASCADE=연쇄 / RESTRICT=거부
TCL COMMIT(확정)·ROLLBACK(취소)·SAVEPOINT(부분) DDL 자동 COMMIT → ROLLBACK ❌

🎯 합격 한 끗: 26강은 세 무기면 출제분의 80%가 즉답이다 — ① SQL 4분류(SELECT=DML·TRUNCATE=DDL·COMMIT/ROLLBACK=TCL) ② DROP/TRUNCATE/DELETE(DELETE만 ROLLBACK 가능) ③ GRANT는 TO·REVOKE는 FROM. 여기에 제약 6종 함정(UNIQUE NULL 허용·PK 1개·FK NULL 가능)과 뷰 독자 인덱스 ❌만 더 얹으면 끝.

전체 목록 필기 이론

합격까지

정처기, 혼자 막막하다면

초개인화 학습앱 Klue와 에듀윌 온라인강의로 합격까지 이어가세요.