DDL — 데이터 정의어
CREATE / ALTER / DROP / TRUNCATE / RENAME — 테이블·뷰·인덱스의 구조를 정의한다.
CREATE TABLE 제약조건 정의는 단답형으로 매회 출제된다. `PRIMARY KEY`, `FOREIGN KEY ... REFERENCES`, `CHECK`, `NOT NULL` 각각의 문법을 정확히 쓸 수 있어야 한다.
DDL(Data Definition Language)은 데이터베이스 객체의 구조를 정의·변경·삭제하는 명령어다. 대표 5종: `CREATE`, `ALTER`, `DROP`, `TRUNCATE`, `RENAME`. 트랜잭션 로그를 남기지 않고 즉시 확정(Auto-commit)되는 경우가 많다.
CREATE TABLE 학생 (
학번 CHAR(10) PRIMARY KEY,
이름 VARCHAR(20) NOT NULL,
학과 VARCHAR(20),
점수 NUMBER(3) CHECK (점수 BETWEEN 0 AND 100),
지도교수 VARCHAR(20),
FOREIGN KEY (지도교수) REFERENCES 교수(이름)
ON DELETE CASCADE
ON UPDATE SET NULL
);는 유일성·최소성·NOT NULL을 자동으로 보장한다. 는 참조 테이블의 컬럼 타입과 일치해야 한다.
제약조건(Constraint) 5종 — `NOT NULL`, `UNIQUE`, `PRIMARY KEY`, `FOREIGN KEY`, `CHECK`, `DEFAULT`.
-- ALTER: 컬럼 추가·수정·삭제
ALTER TABLE 학생 ADD 전화번호 VARCHAR(15);
ALTER TABLE 학생 MODIFY 이름 VARCHAR(30);
ALTER TABLE 학생 DROP COLUMN 전화번호;
-- DROP vs TRUNCATE
DROP TABLE 학생 [CASCADE | RESTRICT]; -- 테이블 자체 삭제
TRUNCATE TABLE 학생; -- 행만 전부 제거, 구조 유지
-- RENAME
RENAME TABLE 학생 TO Student;DROP vs TRUNCATE vs DELETE — DROP은 테이블 자체 삭제(구조 + 데이터), TRUNCATE는 모든 행 삭제 후 구조 유지(DDL, 롤백 불가), DELETE는 조건부 행 삭제(DML, 트랜잭션 롤백 가능).
| 명령 | 분류 | 로깅 | 롤백 | 조건 |
|---|---|---|---|---|
| DROP | DDL | 구조 로그 | 불가 | 없음 |
| TRUNCATE | DDL | 최소 로깅 | 불가 | 없음 (전체 삭제) |
| DELETE | DML | 행별 로깅 | 가능 | WHERE 절 가능 |
다음 조건으로 `사원` 테이블을 생성하는 SQL문을 작성하시오. - 사번: CHAR(5) 기본키 - 이름: VARCHAR(20) NULL 불가 - 급여: 숫자, 0 이상만 허용 - 부서ID: 외래키로 부서(id) 참조, 부서가 삭제되면 사원도 함께 삭제
테이블의 구조는 유지하고 모든 행만 삭제하는 DDL 명령은?