Data Definition Language

DDL은 데이터베이스 객체의 구조와 규칙을 정의한다

DDL은 행 하나를 바꾸는 언어가 아니라 테이블, 인덱스, 제약 조건, 뷰 같은 객체의 정의를 바꿉니다. 실행 결과는 DBMS가 참조하는 시스템 카탈로그에 남아 이후 질의와 검사의 기준이 됩니다.

구조 정의 명령

SQL statement
CREATE 테이블, 인덱스, 뷰 등 새 객체를 만든다.
ALTER 컬럼, 타입, 제약 조건처럼 기존 구조를 바꾼다.
DROP 객체 정의와 관련 메타데이터를 제거한다.
TRUNCATE 구조는 유지하고 행 전체를 빠르게 비운다.
ALTER TABLE products
ADD COLUMN stock INT DEFAULT 0;

시스템 카탈로그

metadata
objects 테이블, 인덱스, 뷰, 스키마 목록
columns 컬럼 이름, 타입, 기본값, NULL 허용 여부
constraints 기본키, 외래키, CHECK, UNIQUE 규칙
statistics 옵티마이저가 참고하는 행 수와 분포 정보
대상 스키마와 메타데이터가 중심이다

DDL의 결과는 DBMS가 어떤 데이터를 유효하다고 볼지 결정하는 기준이 된다.

TRUNCATE DELETE와 같은 말이 아니다

조건으로 행을 고르는 DML이 아니라 테이블 전체를 비우는 명령이며, 분류와 롤백 가능성은 DBMS마다 다르다.

운영 영향 설계 변경은 실행 환경도 흔든다

운영 DB에서는 잠금, 권한, 배포 순서, 기존 데이터 검증까지 함께 고려해야 한다.