IT 공부방 [기본지식 정리]/데이터베이스 (DB)

101. [MySQL] DDL - 데이터 정의 언어

cTosMaster 2025. 5. 23. 14:45

1. CREATE

    새 데이터베이스/테이블/인덱스/뷰/프로시저/트리거 등을 "생성"할 때 사용됨.

-- 데이터베이스 생성
CREATE DATABASE mydb;

-- 테이블 생성
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    email VARCHAR(100)
);

-- 인덱스 생성
CREATE INDEX idx_name ON users(name);

-- 뷰 생성
CREATE VIEW active_users AS
SELECT * FROM users WHERE status = 'active';

-- 저장 프로시저 생성
CREATE PROCEDURE GetUserCount()
BEGIN
    SELECT COUNT(*) FROM users;
END;

 

2. ALTER

    기존 테이블 구조/컬럼 이름/컬럼 데이터 타입/인덱스 추가, 제거/테이블 이름 "변경"할 때 사용됨.

-- 컬럼 추가
ALTER TABLE users ADD COLUMN age INT;

-- PK 제약조건추가 후에 컬럼 반영
ALTER TABLE TEST_EMP ADD CONSTRAINT PK_TEST_EMP PRIMARY KEY (EMPNO);

-- CHECK 제약조건추가 후에 조건 반영
ALTER TABLE employees ADD CONSTRAINT chk_salary CHECK (salary > 0);

-- 컬럼 삭제
ALTER TABLE users DROP COLUMN age;

-- 컬럼 데이터 타입 변경
ALTER TABLE users MODIFY COLUMN name VARCHAR(100);

-- 컬럼 이름 변경 (MySQL 8.0 이상)
ALTER TABLE users RENAME COLUMN name TO username;

-- 테이블 이름 변경
RENAME TABLE users TO customers;

-- 인덱스 삭제
ALTER TABLE users DROP INDEX idx_name;

 

3. DROP

   기존 데이터베이스/테이블/인덱스/뷰/프로시저/트리거 "삭제" 시 사용됨.

-- 데이터베이스 삭제
DROP DATABASE IF EXISTS mydb;

-- 테이블 삭제
DROP TABLE IF EXISTS users;

-- 인덱스 삭제
DROP INDEX IF EXISTS idx_name ON users;

-- 뷰 삭제
DROP VIEW IF EXISTS active_users;

-- 프로시저 삭제
DROP PROCEDURE IF EXISTS GetUserCount;

 

4. RENAME

   기존 테이블명/컬럼명/인덱스명 "수정" 시 사용됨. 

-- 테이블 이름 변경
RENAME TABLE old_table_name TO new_table_name;

-- 컬럼명 변경
ALTER TABLE [table_name] RENAME COLUMN [old_column_name] TO [new_column_name];

-- 인덱스명 변경
ALTER TABLE mytable RENAME INDEX old_idx TO new_idx;

 

5. TRUNCATE

    테이블의 데이터를 모두 제거하고 껍데기만 유지하고 싶을 때 사용

    DELETE보다 성능이 뛰어나며 별도의 로깅을 하지 않음

TRUNCATE TABLE mytable;

 

 

 MODIFY, ALTER, UPDATE 차이점 및 활용 방법

MODIFY 기존 컬럼의 데이터 타입, 속성 변경 컬럼 ALTER TABLE employees MODIFY salary DECIMAL(10,2) NOT NULL; - 컬럼의 데이터 타입 변경 가능
- ALTER TABLE의 일부 기능
- 기존 값 유지
ALTER 테이블의 구조 변경 (컬럼 추가/삭제/수정, 제약 조건 변경 등) 테이블,
컬럼,
제약 조건
ALTER TABLE employees ADD COLUMN address VARCHAR(255); - 테이블 자체를 변경하는 명령어
- 컬럼 추가/삭제/변경
- 제약 조건 변경 (INDEX, FOREIGN KEY 등)
UPDATE 테이블의 데이터 변경 행(레코드) UPDATE employees SET salary = 6000 WHERE id = 1; - 데이터 값 수정에 사용
- 트랜잭션(COMMIT, ROLLBACK) 가능
- WHERE 절을 사용하여 특정 데이터만 변경 가능