SQL 정의어(DDL)와 제어어(DCL)
쉽게 말하면
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 TABLE | CREATE TABLE 표 (열 타입 [제약], ..., PRIMARY KEY(열), FOREIGN KEY(열) REFERENCES 표(열) ON DELETE CASCADE, CHECK(조건)) |
| ALTER TABLE | ALTER TABLE 표 ADD 열 타입 / ALTER TABLE 표 MODIFY 열 타입 / ALTER TABLE 표 DROP COLUMN 열 |
| DROP | DROP TABLE 표 [CASCADE | RESTRICT]. Oracle은 DROP TABLE 표 CASCADE CONSTRAINTS |
| CREATE VIEW | CREATE VIEW 뷰 AS SELECT ... (뷰는 ALTER로 바꿀 수 없다. 지우고 다시 만든다) |
| CREATE INDEX | CREATE [UNIQUE] INDEX 이름 ON 표(열) |
DCL 문법
| 명령 | 모양 | 뜻 |
|---|---|---|
| GRANT | GRANT SELECT, UPDATE ON student TO kim WITH GRANT OPTION | kim에게 권한 부여, kim도 남에게 줄 수 있음 |
| REVOKE | REVOKE UPDATE ON student FROM kim CASCADE | kim과 kim이 준 사람의 권한까지 회수 |
| COMMIT | COMMIT | 트랜잭션의 변경을 확정 |
| ROLLBACK | ROLLBACK [TO 저장점] | 확정 전 변경 취소 |
| SAVEPOINT | SAVEPOINT s1 | ROLLBACK할 중간 지점 표시 |
기출에서 더 나온 것
| 말 | 뜻 |
|---|---|
| 트리거 (Trigger) | 삽입·갱신·삭제 같은 이벤트가 일어날 때마다 자동으로 실행되는 절차형 SQL |
| 저장 프로시저 | 자주 쓰는 SQL을 묶어 저장해 두고 이름으로 호출하는 절차형 SQL |
| 사용자 정의 함수 | 결과 값을 하나 돌려주는 절차형 SQL |
시험에 이렇게 나와요
- DDL → CREATE·ALTER·DROP·TRUNCATE / DML → SELECT·INSERT·UPDATE·DELETE / DCL → GRANT·REVOKE·COMMIT·ROLLBACK
- 열을 추가·변경 → ALTER TABLE (CREATE TABLE은 처음 정의할 때)
- 부모를 지우면 자식도 함께 지움 → CASCADE
- 권한 주기 → GRANT 권한 ON 테이블 TO 사용자 / 회수 → REVOKE 권한 ON 테이블 FROM 사용자
- DCL 기능 → 보안·무결성·회복·병행 제어 (데이터 구조 정의는 DDL)
확인 문제
Q1. 다음 중 DDL(데이터 정의어)에 속하는 명령은?
- ALTER
- UPDATE
- SELECT
- GRANT
정답 보기
1번 ALTER
DDL: CREATE, ALTER, DROP(, TRUNCATE). DML: SELECT, INSERT, UPDATE, DELETE. DCL: GRANT, REVOKE, COMMIT, ROLLBACK.
Q2. 다음 중 DCL에 속하지 않는 것은?
- ALTER
- COMMIT
- REVOKE
- GRANT
정답 보기
1번 ALTER
ALTER는 구조를 바꾸는 DDL이다. GRANT·REVOKE(권한), COMMIT(확정)은 DCL로 분류한다(교재에 따라 COMMIT은 TCL로 따로 나누기도 한다).
Q3. 권한을 받은 사용자가 그 권한을 다른 사용자에게 다시 줄 수 있게 하는 GRANT 옵션은?
- WITH CHECK OPTION
- CASCADE
- WITH GRANT OPTION
- RESTRICT
정답 보기
3번 WITH GRANT OPTION
WITH CHECK OPTION은 뷰 갱신 조건.
Q4. 테이블을 삭제할 때 그 테이블을 참조하는 다른 개체가 있으면 삭제를 거부하는 옵션은?
- SET NULL
- CASCADE
- NO ACTION
- RESTRICT
정답 보기
4번 RESTRICT
RESTRICT는 거부, CASCADE는 함께 삭제.
Q5. STUDENT 테이블에 학과(DEPT) 열을 추가하는 SQL은?
- UPDATE student ADD dept VARCHAR2(10)
- ALTER TABLE student ADD dept VARCHAR2(10)
- INSERT INTO student COLUMN dept
- 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한다.