DataBase/SQL

SQL DDL (Data Definition Language)

metamong-data 2025. 3. 10. 19:26
728x90
반응형

개요

SQL에서 DDL (Data Definition Language)은 데이터베이스의 구조(스키마)를 정의하고 변경하는 데 사용되는 명령어들의 집합입니다. 즉, 테이블, 인덱스, 뷰, 스키마 등을 생성, 변경, 삭제하는 역할을 합니다.
DDL의 주요 명령어는 다음과 같습니다.

  1. CREATE - 데이터베이스 객체(테이블, 뷰, 인덱스 등)를 생성
  2. ALTER - 기존 데이터베이스 객체를 수정
  3. DROP - 데이터베이스 객체를 삭제
  4. TRUNCATE - 테이블의 모든 데이터를 삭제하면서도 구조는 유지

각 명령어를 예제와 함께 자세히 살펴보겠습니다.


1. CREATE: 테이블 및 객체 생성

(1) 테이블 생성

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    age INT CHECK (age >= 18),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

📌 설명

  • id: 기본 키 (PRIMARY KEY), 자동 증가 (AUTO_INCREMENT)
  • name: 50자까지 허용하는 문자열, NULL 불가능 (NOT NULL)
  • email: 중복을 방지하는 UNIQUE 제약 조건
  • age: 18세 이상만 입력 가능 (CHECK (age >= 18))
  • created_at: 현재 시간으로 자동 입력 (DEFAULT CURRENT_TIMESTAMP)

(2) 데이터베이스 생성

CREATE DATABASE mydb;
  • mydb라는 데이터베이스 생성

(3) 인덱스 생성

CREATE INDEX idx_users_email ON users(email);
  • users 테이블의 email 컬럼에 인덱스를 생성하여 검색 성능을 향상

(4) 뷰 생성

CREATE VIEW adult_users AS
SELECT id, name, email FROM users WHERE age >= 18;
  • adult_users라는 뷰를 생성하여 18세 이상 유저만 조회할 수 있도록 함

2. ALTER: 테이블 구조 변경

(1) 컬럼 추가

ALTER TABLE users ADD COLUMN phone VARCHAR(15);
  • users 테이블에 phone 컬럼 추가

(2) 컬럼 삭제

ALTER TABLE users DROP COLUMN phone;
  • phone 컬럼 삭제

(3) 컬럼 데이터 타입 변경

ALTER TABLE users MODIFY COLUMN name VARCHAR(100);
  • name 컬럼의 데이터 타입을 VARCHAR(50)VARCHAR(100)으로 변경

(4) 컬럼 이름 변경

ALTER TABLE users CHANGE COLUMN name full_name VARCHAR(100);
  • name 컬럼의 이름을 full_name으로 변경

(5) 제약 조건 추가

ALTER TABLE users ADD CONSTRAINT chk_age CHECK (age >= 18);
  • age 컬럼에 대한 CHECK 제약 조건 추가

3. DROP: 데이터베이스 객체 삭제

(1) 테이블 삭제

DROP TABLE users;
  • users 테이블 삭제 (데이터와 구조 모두 삭제)

(2) 데이터베이스 삭제

DROP DATABASE mydb;
  • mydb 데이터베이스 삭제

(3) 인덱스 삭제

DROP INDEX idx_users_email ON users;
  • users 테이블의 idx_users_email 인덱스 삭제

(4) 뷰 삭제

DROP VIEW adult_users;
  • adult_users 뷰 삭제

4. TRUNCATE: 테이블의 모든 데이터 삭제

TRUNCATE TABLE users;
  • users 테이블의 모든 데이터 삭제 (초기화)
  • 테이블 구조는 유지됨
  • DELETE FROM users; 와 달리 ROLLBACK 불가능 (복구 불가능)
  • 성능이 더 빠름

정리

명령어 설명
CREATE 테이블, 데이터베이스, 뷰, 인덱스 생성
ALTER 기존 객체(테이블 등)의 구조 변경
DROP 객체 삭제 (데이터 및 구조 모두 제거)
TRUNCATE 모든 데이터 삭제 (구조 유지, ROLLBACK 불가능)

✅ DDL은 언제 사용할까?

  1. 새로운 테이블을 만들 때CREATE
  2. 기존 테이블에 컬럼을 추가하거나 수정할 때ALTER
  3. 불필요한 테이블이나 데이터베이스를 삭제할 때DROP
  4. 테이블을 초기화하고 데이터만 삭제할 때TRUNCATE

DDL은 데이터의 구조를 관리하는 중요한 SQL 명령어이므로 신중하게 사용해야 합니다!

728x90