-
101. [MySQL] DDL - 데이터 정의 언어IT 공부방 [기본지식 정리]/데이터베이스 (DB) 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 절을 사용하여 특정 데이터만 변경 가능'IT 공부방 [기본지식 정리] > 데이터베이스 (DB)' 카테고리의 다른 글
100. [MySQL] 시스템 관리 명령 (0) 2025.05.23 103. [MySQL] DCL - 데이터 제어 언어 (0) 2025.05.23 008. SQL (0) 2025.05.23 007. 트랜잭션 (0) 2025.05.23 006. 반정규화 (0) 2025.05.23