공든탑앱 열기

SQL 정의어(DDL)와 제어어(DCL)

정보처리기사 · SQL 응용 · 약 15분

쉽게 말하면

SQL 명령은 하는 일에 따라 세 무리로 나뉘어요. 표 자체를 만들고 고치고 없애는 정의어(DDL: CREATE, ALTER, DROP), 표 안의 데이터를 넣고 고치고 지우고 찾는 조작어(DML: INSERT, UPDATE, DELETE, SELECT), 권한을 주고 거두고 작업을 확정하거나 되돌리는 제어어(DCL: GRANT, REVOKE, COMMIT, ROLLBACK)예요. 아래 모의 SQL 창에서 직접 표를 만들어 봐요.

시험용 정의

SQL은 관계형 데이터베이스의 표준 질의어로 DDL(정의어), DML(조작어), DCL(제어어)로 나뉜다. DDL은 스키마·테이블·뷰·인덱스를 CREATE(정의), ALTER(변경), DROP(삭제)한다. CREATE TABLE에서 PRIMARY KEY(기본키), FOREIGN KEY ... REFERENCES(외래키, ON DELETE CASCADE 등 참조 동작), UNIQUE, NOT NULL, CHECK(값 조건), DEFAULT 제약 조건을 건다. DROP의 CASCADE는 참조하는 개체까지 함께 삭제, RESTRICT는 참조 중이면 삭제 거부다. DCL은 GRANT(권한 부여, WITH GRANT OPTION이면 받은 권한을 남에게 줄 수 있음), REVOKE(권한 회수, CASCADE면 그가 준 권한까지 회수), COMMIT(변경 확정), ROLLBACK(취소), SAVEPOINT(되돌릴 지점)다.

비유로 이해하기

식당 운영에 비유하면 DDL은 가구 배치(테이블을 들이고, 바꾸고, 치우기), DML은 손님 받기(앉히고, 자리 바꾸고, 내보내고, 찾기), DCL은 직원 출입증 관리와 장부 마감(확정·취소)이다.

자세히

먼저 알아 둘 말

말뜻
스키마데이터베이스 구조 정의. CREATE SCHEMA로 만든다
제약 조건잘못된 값이 들어가지 않게 거는 규칙
CASCADE / RESTRICT연쇄해서 함께 처리 / 참조 중이면 거부
트랜잭션한꺼번에 처리되어야 하는 작업 단위
권한SELECT, INSERT, UPDATE, DELETE, ALL 등 객체에 대한 사용 허가

이 실습의 표

STUDENT(SNO 학번 PK, NAME, DEPT 학과, YEAR 학년, SCORE 점수) 6명, COURSE(CNO PK, CNAME, CREDIT) 3과목, ENROLL(SNO → STUDENT, CNO → COURSE, GRADE) 6건. SELECT * FROM student로 먼저 살펴보자.

DDL 문법

명령모양
CREATE TABLECREATE TABLE 표 (열 타입 [제약], ..., PRIMARY KEY(열), FOREIGN KEY(열) REFERENCES 표(열) ON DELETE CASCADE, CHECK(조건))
ALTER TABLEALTER TABLE 표 ADD 열 타입 / ALTER TABLE 표 MODIFY 열 타입 / ALTER TABLE 표 DROP COLUMN 열
DROPDROP TABLE 표 [CASCADE | RESTRICT]. Oracle은 DROP TABLE 표 CASCADE CONSTRAINTS
CREATE VIEWCREATE VIEW 뷰 AS SELECT ... (뷰는 ALTER로 바꿀 수 없다. 지우고 다시 만든다)
CREATE INDEXCREATE [UNIQUE] INDEX 이름 ON 표(열)

DCL 문법

명령모양뜻
GRANTGRANT SELECT, UPDATE ON student TO kim WITH GRANT OPTIONkim에게 권한 부여, kim도 남에게 줄 수 있음
REVOKEREVOKE UPDATE ON student FROM kim CASCADEkim과 kim이 준 사람의 권한까지 회수
COMMITCOMMIT트랜잭션의 변경을 확정
ROLLBACKROLLBACK [TO 저장점]확정 전 변경 취소
SAVEPOINTSAVEPOINT s1ROLLBACK할 중간 지점 표시

기출에서 더 나온 것

말뜻
트리거 (Trigger)삽입·갱신·삭제 같은 이벤트가 일어날 때마다 자동으로 실행되는 절차형 SQL
저장 프로시저자주 쓰는 SQL을 묶어 저장해 두고 이름으로 호출하는 절차형 SQL
사용자 정의 함수결과 값을 하나 돌려주는 절차형 SQL

시험에 이렇게 나와요

확인 문제

Q1. 다음 중 DDL(데이터 정의어)에 속하는 명령은?

  1. ALTER
  2. UPDATE
  3. SELECT
  4. GRANT
정답 보기

1번 ALTER

DDL: CREATE, ALTER, DROP(, TRUNCATE). DML: SELECT, INSERT, UPDATE, DELETE. DCL: GRANT, REVOKE, COMMIT, ROLLBACK.

Q2. 다음 중 DCL에 속하지 않는 것은?

  1. ALTER
  2. COMMIT
  3. REVOKE
  4. GRANT
정답 보기

1번 ALTER

ALTER는 구조를 바꾸는 DDL이다. GRANT·REVOKE(권한), COMMIT(확정)은 DCL로 분류한다(교재에 따라 COMMIT은 TCL로 따로 나누기도 한다).

Q3. 권한을 받은 사용자가 그 권한을 다른 사용자에게 다시 줄 수 있게 하는 GRANT 옵션은?

  1. WITH CHECK OPTION
  2. CASCADE
  3. WITH GRANT OPTION
  4. RESTRICT
정답 보기

3번 WITH GRANT OPTION

WITH CHECK OPTION은 뷰 갱신 조건.

Q4. 테이블을 삭제할 때 그 테이블을 참조하는 다른 개체가 있으면 삭제를 거부하는 옵션은?

  1. SET NULL
  2. CASCADE
  3. NO ACTION
  4. RESTRICT
정답 보기

4번 RESTRICT

RESTRICT는 거부, CASCADE는 함께 삭제.

Q5. STUDENT 테이블에 학과(DEPT) 열을 추가하는 SQL은?

  1. UPDATE student ADD dept VARCHAR2(10)
  2. ALTER TABLE student ADD dept VARCHAR2(10)
  3. INSERT INTO student COLUMN dept
  4. CREATE COLUMN dept ON student
정답 보기

2번 ALTER TABLE student ADD dept VARCHAR2(10)

구조 변경은 ALTER TABLE ... ADD.

헷갈리기 쉬운 O·X

DROP TABLE은 테이블의 데이터만 지우고 구조는 남긴다.

정답 보기

X 구조까지 삭제한다.

CHECK 제약 조건은 열에 들어갈 값의 조건을 정한다.

정답 보기

O

뷰는 ALTER VIEW로 정의를 자유롭게 바꿀 수 있다 (정보처리기사 기준).

정답 보기

X 뷰는 ALTER로 바꿀 수 없어 DROP 후 다시 CREATE한다.

함께 보면 좋은 개념