topic난이도 · 약 35

DDL — 데이터 정의어

CREATE / ALTER / DROP / TRUNCATE / RENAME — 테이블·뷰·인덱스의 구조를 정의한다.

#SQL#DDL#실기핵심
왜 배우는가

CREATE TABLE 제약조건 정의는 단답형으로 매회 출제된다. `PRIMARY KEY`, `FOREIGN KEY ... REFERENCES`, `CHECK`, `NOT NULL` 각각의 문법을 정확히 쓸 수 있어야 한다.

DDL(Data Definition Language)은 데이터베이스 객체의 구조를 정의·변경·삭제하는 명령어다. 대표 5종: `CREATE`, `ALTER`, `DROP`, `TRUNCATE`, `RENAME`. 트랜잭션 로그를 남기지 않고 즉시 확정(Auto-commit)되는 경우가 많다.

sql
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`.

sql
-- 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, 트랜잭션 롤백 가능).

명령분류로깅롤백조건
DROPDDL구조 로그불가없음
TRUNCATEDDL최소 로깅불가없음 (전체 삭제)
DELETEDML행별 로깅가능WHERE 절 가능
실기 드릴 2문항
database실기 드릴 · SQL 작성

다음 조건으로 `사원` 테이블을 생성하는 SQL문을 작성하시오. - 사번: CHAR(5) 기본키 - 이름: VARCHAR(20) NULL 불가 - 급여: 숫자, 0 이상만 허용 - 부서ID: 외래키로 부서(id) 참조, 부서가 삭제되면 사원도 함께 삭제

edit실기 드릴 · 단답형

테이블의 구조는 유지하고 모든 행만 삭제하는 DDL 명령은?