DataBase/SQL
SQL DDL (Data Definition Language)
metamong-data
2025. 3. 10. 19:26
728x90
반응형
개요
SQL에서 DDL (Data Definition Language)은 데이터베이스의 구조(스키마)를 정의하고 변경하는 데 사용되는 명령어들의 집합입니다. 즉, 테이블, 인덱스, 뷰, 스키마 등을 생성, 변경, 삭제하는 역할을 합니다.
DDL의 주요 명령어는 다음과 같습니다.
- CREATE - 데이터베이스 객체(테이블, 뷰, 인덱스 등)를 생성
- ALTER - 기존 데이터베이스 객체를 수정
- DROP - 데이터베이스 객체를 삭제
- 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은 언제 사용할까?
- 새로운 테이블을 만들 때 →
CREATE
- 기존 테이블에 컬럼을 추가하거나 수정할 때 →
ALTER
- 불필요한 테이블이나 데이터베이스를 삭제할 때 →
DROP
- 테이블을 초기화하고 데이터만 삭제할 때 →
TRUNCATE
DDL은 데이터의 구조를 관리하는 중요한 SQL 명령어이므로 신중하게 사용해야 합니다!
728x90