SQL - DDL
(Data Definition Language)
๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ
์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์์ฑ, ์์ , ์ญ์ ํ๋ SQL์ ํ ๋ถ๋ถ์ผ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ์ ์ํ๊ณ ๊ด๋ฆฌํ๋ ๋ช
๋ น์ด ์งํฉ์
๋๋ค.
: ๋ฐ์ดํฐ ์ ์์ด
โช
CREATE
โช
ALTER
โช
DROP
CREATE TABLE - ํ ์ด๋ธ ์์ฑ
ํ
์ด๋ธ ์์ฑ
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ๋ช
1 ๋ฐ์ดํฐํ์
[NOT NULL] [DEFAULT ๊ธฐ๋ณธ๊ฐ] [AUTO_INCREMENT] [PRIMARY KEY | UNIQUE],
์ปฌ๋ผ๋ช
2 ๋ฐ์ดํฐํ์
[NOT NULL] [DEFAULT ๊ธฐ๋ณธ๊ฐ] [AUTO_INCREMENT] [PRIMARY KEY | UNIQUE],
์ปฌ๋ผ๋ช
3 ๋ฐ์ดํฐํ์
[NOT NULL] [DEFAULT ๊ธฐ๋ณธ๊ฐ] [AUTO_INCREMENT] [PRIMARY KEY | UNIQUE]
);
SQL
๋ณต์ฌ
๊ธฐ์กด ํ
์ด๋ธ์ ์กฐํ(๋ณต์ฌ)ํ์ฌ ํ
์ด๋ธ ์์ฑ
CREATE TABLE ํ
์ด๋ธ๋ช
AS SELECT * FROM ๊ธฐ์กด ํ
์ด๋ธ๋ช
[WHERE ์กฐ๊ฑด];
SQL
๋ณต์ฌ
ALTER TABLE - ํ ์ด๋ธ ๋ณ๊ฒฝ
ํ
์ด๋ธ์ ์ปฌ๋ผ ์ถ๊ฐ
ALTER TABLE ํ
์ด๋ธ๋ช
ADD ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
;
Plain Text
๋ณต์ฌ
ํ
์ด๋ธ์ ์ปฌ๋ผ๋ช
๋ณ๊ฒฝ
ALTER TABLE ํ
์ด๋ธ๋ช
CHANGE ๊ธฐ์กด์ปฌ๋ผ๋ช
๋ณ๊ฒฝํ ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
;
Plain Text
๋ณต์ฌ
ํ
์ด๋ธ์ ์ปฌ๋ผ ๋ฐ์ดํฐํ์
๋ณ๊ฒฝ
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ์ปฌ๋ผ๋ช
๋ณ๊ฒฝํ ๋ฐ์ดํฐํ์
;
Plain Text
๋ณต์ฌ
์ปฌ๋ผ ์ญ์
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
;
SQL
๋ณต์ฌ
DROP TABLE - ํ ์ด๋ธ ์ญ์
ํ
์ด๋ธ ์ญ์
DROP TABLE ํ
์ด๋ธ๋ช
;
SQL
๋ณต์ฌ
ํ
์ด๋ธ ๋ฐ์ดํฐ ์ญ์
TRUNCATE TABLE ํ
์ด๋ธ๋ช
;
SQL
๋ณต์ฌ
ํ
์ด๋ธ๋ช
๋ณ๊ฒฝ
RENAME TABLE ํ
์ด๋ธ๋ช
TO ๋ณ๊ฒฝํ ํ
์ด๋ธ๋ช
;
SQL
๋ณต์ฌ
์ ์ฝ์กฐ๊ฑด
: ํ
์ด๋ธ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฝํ๋ ์กฐ๊ฑด
โข
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ
: ๋ฐ์ดํฐ์ ์ ํ์ฑ๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ์ ์ฝ ์กฐ๊ฑด์ ์งํฉ
MySQL์์ ์ง์ํ๋ ์ ์ฝ์กฐ๊ฑด
์ ์ฝ์กฐ๊ฑด | ์ค๋ช
|
NOT NULL | ํด๋น ์ปฌ๋ผ์ NULL ๊ฐ์ ํ์ฉํ์ง ์์ |
UNIQUE | ํด๋น ์ปฌ๋ผ ๊ฐ์ ์ ์ผํด์ผ ํ๋ฉฐ, NULL์ ํ์ฉ |
PRIMARY KEY | ํ
์ด๋ธ์ ๊ธฐ๋ณธํค๋ก ์ง์ . NOT NULL + UNIQUE ํฌํจ |
FOREIGN KEY | ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ธฐ๋ณธํค ๊ฐ์ ์ฐธ์กฐ. ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง |
CHECK | (MySQL 8.0 ์ด์๋ถํฐ ์ง์) ์ง์ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ๋ง ์
๋ ฅ ๊ฐ๋ฅ |
DEFAULT | ์ปฌ๋ผ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ |
AUTO_INCREMENT | ์ซ์ํ ์ปฌ๋ผ์ ์๋์ผ๋ก 1์ฉ ์ฆ๊ฐํ๋ ๊ฐ ๋ถ์ฌ (๊ธฐ๋ณธํค์ ์์ฃผ ์ฌ์ฉ) |
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ข
๋ฅ (MySQL ๊ด์ )
๋ฌด๊ฒฐ์ฑ ์ข
๋ฅ | ์ค๋ช
|
๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ | ํ
์ด๋ธ์ ๊ธฐ๋ณธํค๋ NOT NULL์ด๋ฉฐ, ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ ธ์ผ ํจ |
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ | ์ธ๋ํค(FOREIGN KEY)๋ ์ฐธ์กฐ ๋์ ํ
์ด๋ธ์ PRIMARY KEY ๋๋ UNIQUE ํค ๊ฐ๋ง ๊ฐ์ง ์ ์์. ON DELETE, ON UPDATE ์ต์
์ ํตํด ๋์ ๋ฐฉ์ ์ ์ ๊ฐ๋ฅ |
๋๋ฉ์ธ ๋ฌด๊ฒฐ์ฑ | ์ปฌ๋ผ์ ์ ์๋ ๋ฐ์ดํฐ ํ์
, DEFAULT, CHECK, ENUM, SET ๋ฑ์ ํตํด ํน์ ๊ฐ๋ง ํ์ฉํ๋๋ก ์ ํ ๊ฐ๋ฅ |
NOT NULL
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
NOT NULL
);
-- ํ
์ด๋ธ ์์ฑ ํ ์ ์ฉ:
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
NOT NULL;
SQL
๋ณต์ฌ
UNIQUE
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
UNIQUE
);
-- ๋ค์ค์ปฌ๋ผ UNIQUE
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ1 ๋ฐ์ดํฐํ์
,
์ปฌ๋ผ2 ๋ฐ์ดํฐํ์
,
UNIQUE(์ปฌ๋ผ1, ์ปฌ๋ผ2)
);
SQL
๋ณต์ฌ
PRIMARY KEY
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
PRIMARY KEY
);
-- ๋ค์ค์ปฌ๋ผ PK
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ1 ๋ฐ์ดํฐํ์
,
์ปฌ๋ผ2 ๋ฐ์ดํฐํ์
,
PRIMARY KEY(์ปฌ๋ผ1, ์ปฌ๋ผ2)
);
SQL
๋ณต์ฌ
FOREIGN KEY
CREATE TABLE ์ฐธ์กฐํ
์ด๋ธ (
id INT PRIMARY KEY
);
CREATE TABLE ํ
์ด๋ธ๋ช
(
ref_id INT,
FOREIGN KEY (ref_id) REFERENCES ์ฐธ์กฐํ
์ด๋ธ(id)
);
SQL
๋ณต์ฌ
CHECK
CREATE TABLE ํ
์ด๋ธ๋ช
(
age INT CHECK (age >= 0)
);
SQL
๋ณต์ฌ
โข
MySQL 8.0 ์ด์์์์ง์ CHECK ์ ์ฝ์กฐ๊ฑด ์ง์ ์ ์ฉ (5.x๋ณด๋ค ์ดํ์์๋ง)
DEFAULT
CREATE TABLE ํ
์ด๋ธ๋ช
(
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
SQL
๋ณต์ฌ