Search

DDL - ๋ฐ์ดํ„ฐ ์ •์˜์–ด

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์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฐ’ ๋ถ€์—ฌ (๊ธฐ๋ณธํ‚ค์— ์ž์ฃผ ์‚ฌ์šฉ)
CHECK ์ œ์•ฝ์กฐ๊ฑด์€ MySQL 8.0 ์ด์ƒ์—์„œ๋งŒ ์ œํ•œ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ข…๋ฅ˜ (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
๋ณต์‚ฌ