Database
[Database] DDL
daze1002
2025. 3. 23. 23:44
반응형
🧱 1. DDL (Data Definition Language)
DDL은 데이터베이스의 구조(스키마)를 정의하거나 수정하는 명령어 모음입니다.
📌 1-1. CREATE - 테이블 생성
CREATE TABLE IF NOT EXISTS tb1 (
pk INT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
IF NOT EXISTS
로 중복 생성 방지- 컬럼 정의 문법
column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT]
🔍 테이블 확인
DESCRIBE tb1;
✅ 데이터 삽입
INSERT INTO tb1 VALUES (1, 10, 'Y');
SELECT * FROM tb1;
📌 1-2. AUTO_INCREMENT - 자동 번호 증가
CREATE TABLE IF NOT EXISTS tb2 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
INSERT INTO tb2 VALUES (NULL, 10, 'Y');
INSERT INTO tb2 VALUES (NULL, 20, 'Y');
SELECT * FROM tb2;
📌 1-3. ALTER - 테이블 구조 수정
🔧 1-3-1. 컬럼 추가
ALTER TABLE tb2
ADD col2 INT NOT NULL;
❌ 1-3-2. 컬럼 삭제
ALTER TABLE tb2
DROP COLUMN col2;
✏️ 1-3-3. 컬럼명 및 타입 변경
ALTER TABLE tb2
CHANGE COLUMN fk change_fk INT NOT NULL;
🔒 1-3-4. 제약조건 수정 (PRIMARY KEY 등)
AUTO_INCREMENT
가 걸려 있으면 DROP PRIMARY KEY 불가
→ 먼저AUTO_INCREMENT
해제 후 제거 가능
ALTER TABLE tb2 MODIFY pk INT;
ALTER TABLE tb2 DROP PRIMARY KEY;
→ 다시 설정
ALTER TABLE tb2 ADD PRIMARY KEY(pk);
➕ 1-3-5. 여러 컬럼 추가
ALTER TABLE tb2
ADD col3 DATE NOT NULL,
ADD col4 TINYINT NOT NULL;
🚫 MySQL 설정에 따라 NO_ZERO_DATE
에러 발생 가능
→ 해결 방법:
SET GLOBAL sql_mode = '';
📌 1-4. DROP - 테이블 삭제
DROP TABLE IF EXISTS tb3;
📦 복수 테이블 삭제
DROP TABLE IF EXISTS tb4, tb5;
📌 1-5. TRUNCATE - 테이블 초기화
TRUNCATE tb6;
- DELETE보다 빠른 테이블 전체 삭제
AUTO_INCREMENT
초기화도 함께 수행
📘 TIP 요약
명령어 | 기능 요약 |
---|---|
CREATE |
테이블 생성 |
ALTER |
테이블 수정 (컬럼 추가/변경/삭제, 제약조건 등) |
DROP |
테이블 삭제 |
TRUNCATE |
테이블 내용 전체 삭제 및 초기화 |
AUTO_INCREMENT |
자동 증가 기본키 설정 |