💡 DDL(Data Definition Language)는 데이터베이스의 스키마를 정의하거나 수정하는 데 사용되는 SQL의 한 부분이다.
1. CREATE
- 테이블 생성을 위한 구문
- IF NOT EXISTS를 적용하면 기존에 존재하는 테이블이라도 에러가 발생하지 x
# 테이블의 컬럼 설정 방법
column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint;
# tb1 테이블 생성
CREATE TABLE IF NOT EXISTS tb1 (
pk INT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
+ AUTO_INCREMENT
- insert 시 primary key 에 해당하는 컬럼에 자동으로 번호를 발생시켜 저장할 수 있다.
CREATE TABLE IF NOT EXISTS tb2 (
pk INT AUTO_INCREMENT PRIMARY KEY, #AUTO_INCREMENT
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
2. ALTER
- 테이블에 추가/변경/수정/삭제하는 모든 것은 ALTER 명령어를 사용해 적용한다.
- ALTER TABLE 테이블명 ADD 컬럼명 컬럼정의
# [열 추가]
# col2 컬럼 추가(INT형, NOT NULL 제약조건 존재)
ALTER TABLE tb2
ADD col2 INT NOT NULL;
DESCRIBE tb2;
# [열 삭제]
# col2 삭제
ALTER TABLE tb2
DROP COLUMN col2;
DESCRIBE tb2;
3. DROP
- 테이블을 삭제하기 위한 구문
# tb3 테이블 생성 후 삭제
-- tb3 테이블 생성
CREATE TABLE IF NOT EXISTS tb3 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
# tb3 테이블 삭제
DROP TABLE IF EXISTS tb3; # 테이블이 존재한다면 삭제하라
# 두 개 이상의 테이블 생성 후 한번에 삭제
-- tb4 테이블 생성
CREATE TABLE IF NOT EXISTS tb4 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
-- tb5 테이블 생성
CREATE TABLE IF NOT EXISTS tb5 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
-- 한번에 2개의 테이 삭제
DROP TABLE IF EXISTS tb4, tb5;
4. TRUNCATE
- 데이터를 다 삭제할 경우 행마다 하나씩 지워지는 DELETE보다 DROP 이후 바로 테이블을 재생성해주는 TRUNCATE가 훨씬 효율적으로 한번에 테이블을 초기화 시켜준다.
- 또한 AUTO_INCREMENT 컬럼이 있는 경우 시작 값도 0으로 초기화가 된다.
현업에서는 절대 쓰이지 않는!!!
-- tb6 테이블 생성
CREATE TABLE IF NOT EXISTS tb6 (
pk INT AUTO_INCREMENT PRIMARY KEY,
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;
-- 4개 행 데이터 INSERT
INSERT INTO tb6 VALUES (null, 10, 'Y');
INSERT INTO tb6 VALUES (null, 20, 'Y');
INSERT INTO tb6 VALUES (null, 30, 'Y');
INSERT INTO tb6 VALUES (null, 40, 'Y');
-- 제대로 INSERT 되었는지 확인
SELECT * FROM tb6;
-- 테이블 초기화 하기
-- TRUNCATE TABLE tb6;
TRUNCATE tb6; -- TABLE 키워드 생략 가능'SKN > 02. DB' 카테고리의 다른 글
| 09. INDEX (0) | 2025.02.19 |
|---|---|
| 08. CONSTRAINTS (0) | 2025.02.19 |
| 06. 정규화 (0) | 2025.02.19 |
| 05. 이상(Anomaly) (0) | 2025.02.19 |
| 03. DB Modeling 개요 (0) | 2025.02.19 |