๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ”ฌweb application/- Database

[SQL๋ฌธ ๊ธฐ์ดˆ] DDL ๋ฐ์ดํ„ฐ ์ •์˜์–ด :: CREATE, ALTER, DROP, TRUNCATE ๋ฌธ

by Wonit 2020. 7. 7.

Data Define Language

DDL์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด๋Š” ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ, ์ˆ˜์ •, ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ๋ช…๋ น์–ด๋“ค์ด๋‹ค.


์šฐ๋ฆฌ๊ฐ€ ์•ž์„œ์„œ ๋ฐฐ์šด SELECT๋Š” ๋”ฐ์ง€์ž๋ฉด DML::Data Management Language ์— ํ•ด๋‹นํ•œ๋‹ค.

 

์•ž์—์„œ ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฐ ๋ฌธ์žฅ์„ ๋ดค์„ ๊ฒƒ์ด๋‹ค

SELECT * FROM STUDENT_TABLE;

SELECT student_id FROM STUDENT_TABLE
ORDER BY name DESC;
์ด๋“ค์˜ ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ณ  ์กฐ๊ฑด์„ ๋ฐ›๋Š”์ง€ ๊ถ๊ธˆ ํ•˜๋‹ค๋ฉด SELECT ๋ฌธ ํ˜น์€ SQL๋ฌธ ๊ธฐ์ดˆ Section์— ๊ฐ€์„œ ํ™•์ธํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

๋ฌธ์žฅ์˜ ๊ฒฐ๊ณผ์— ํ•ต์‹ฌ์€ ํ…Œ์ด๋ธ” ์ž์ฒด์˜ ๋ณ€๊ฒฝ์€ ์—†๋‹ค. ๋ผ๋Š” ์ ์— ์žˆ๋‹ค.


์šฐ๋ฆฌ๋Š” DML๋กœ ํ…Œ์ด๋ธ” ์ž์ฒด์˜ ๋ณ€๊ฒฝ์€ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์•ž์œผ๋กœ ๋ฐฐ์šฐ๊ฒŒ๋  DDL์„ ๋ฐฐ์šฐ๊ฒŒ ๋œ๋‹ค๋ฉด ํ…Œ์ด๋ธ”์„

  • ์‚ญ์ œ ํ•˜๊ฑฐ๋‚˜
  • ์ˆ˜์ • ๋˜๋Š”
  • ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€๋Š” SELECT ๋ฐ–์— ๋ฐฐ์šฐ์ง€ ์•Š์•˜์ง€๋งŒ ์ถ”ํ›„์— DML์— INSERT, UPDATE๋‚˜ DELETE์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค๋ฃจ๊ฒ ๋‹ค.

 

๊ทธ๋Ÿผ ์‚ญ์ œ, ์ˆ˜์ •, ์ƒ์„ฑ์„ DDL์˜ ๊ด€์ ์—์„œ ํ•™์Šตํ•ด๋ณด์ž.

ํ…Œ์ด๋ธ” ์ƒ์„ฑ

CREATE TABLE

ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋ช‡๋ช‡์˜ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ •์˜ํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ์ •์˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

 

ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์ œ์•ฝ์กฐ๊ฑด


ํ…Œ์ด๋ธ”์˜ ์ƒ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  • ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉฐ 30์ž ์ด๋‚ด๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฌธ์ž, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž(_, &, #)๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์ด ์—†๋‹ค. ๋งŒ์•ฝ ์†Œ๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์ค˜์•ผ ํ•œ๋‹ค.
  • ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ด๋ฆ„๊ณผ ์ค‘๋ณต๋˜์–ด์„  ์•ˆ๋œ๋‹ค.

๋ญ ๋ง์ด ์–ด๋ ต์ง€ ํ•œ ๋ฒˆ ์ฝ์–ด๋ณด๋ฉด ์–ด์ฉŒ๋ฉด ๋‹น์—ฐํ•œ ์ด์•ผ๊ธฐ๋“ค์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ œ์•ฝ์กฐ๊ฑด์„ ๋ฌด์‹œํ•˜๊ณ  ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ํž˜๋“ค์–ด์ง„ ์ ์ด ๋ช‡ ๋ฒˆ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์ถฉ ์•ˆ๋‹ค๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ ๋ณด๋‹ค ํ•œ ๋ฒˆ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ์ด ๋‹ค์Œ์˜ ํ™”๋ฅผ ์ตœ์†Œํ™” ํ•˜๋Š” ๊ธธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์ด์ œ ์ƒ์„ฑ์„ ์œ„ํ•œ ๊ธฐ๋ณธ ํ˜•์‹๊ณผ ์กฐ๊ฑด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

CREATE TABLE [schema.] table_name
(column datatype[DEFAULT expression][column_constraint], ...]);

ํ˜•์‹์€ ์ •๋ง์ •๋ง ๊ฐ„๋‹จํ•œ๋ฐ ์ด๋ ‡๊ฒŒ ๊ธ€๋กœ ์จ๋ณด๋‹ˆ ๋ณต์žกํ•ด๋ณด์ธ๋‹ค.. ํ•˜๋‚˜์”ฉ ํ’€์–ด์„œ ์„ค๋ช…ํ•˜์ž๋ฉด

  • CREATE TALBE : ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ช…๋ น์–ด
  • column : ํ…Œ์ด๋ธ”์— ํฌํ•จ๋˜๋Š” ์ปฌ๋Ÿผ
  • datatype : ์ปฌ๋Ÿผ์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…
  • DEFAULT expression : ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์‹œ ๊ฐ’์ด ์ƒ๋žต๋œ ๊ฒฝ์šฐ ์ž…๋ ฅ๋˜๋Š” DEFAULT ๊ฐ’
  • column_constraint : ์ปฌ๋Ÿผ์— ์ •์˜๋˜๋Š” ์ œ์•ฝ์กฐ๊ฑด

๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์› ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด๋ณด์ž

CREATE TABLE emp01(
    empno number(4),
    ename varchar2(15),
    sal number(7, 3)
);

ํ…Œ์ด๋ธ” ์ˆ˜์ •(๊ตฌ์กฐ ๋ณ€๊ฒฝ)

ALTER TABLE

์œ„์—์„œ ๋”ฐ๋ผํ•˜๋ผ๋Š” ๋Œ€๋กœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ–ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ์œ„์˜ ํ…Œ์ด๋ธ”์—์„œ sal ์นผ๋Ÿผ์„ number(8, 4)๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด comm์ด๋ผ๋Š” ์นผ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„๋•Œ๋Š” ํ…Œ์ด๋ธ” ์ˆ˜์ •์„ ์œ„ํ•œ ALTER ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.


๋˜ํ•œ ํ…Œ์ด๋ธ” ์ˆ˜์ •์—๋Š” ์—ฌ๋Ÿฌ ์กฐ๊ฑด์ด ๋ถ™์„ ์ˆ˜ ์žˆ๋‹ค.

  • ์ปฌ๋Ÿผ ์ถ”๊ฐ€
  • ์ปฌ๋Ÿผ ๋ณ€๊ฒฝ
  • ์ปฌ๋Ÿผ ์ œ๊ฑฐ

์ปฌ๋Ÿผ ์ถ”๊ฐ€ :: ALTER TABLE ... ADD

์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๋Š” ADD ์ด๋‹ค.

ALTER TALBE table_name
ADD [column_name data_type DEFAULT expression] ...);

์—ฌ๊ธฐ์„œ ๋‚˜์˜ค๋Š” data type ์ด๋‚˜ DEFAULT Expression์€ ์œ„์˜ CREATE TABLE์˜ ์นผ๋Ÿผ ํ˜•์‹๊ณผ ๋™์ผํ•˜๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ๋‚ ์งœ ํƒ€์ž…์„ ๊ฐ€์ง€๋Š” birth ์นผ๋Ÿผ์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž.

ALTER TABLE emp01
ADD (birth date);

์นผ๋Ÿผ ๋ณ€๊ฒฝ :: ALTER TABLE ... MODIFY

์นผ๋Ÿผ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” MODIFY ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

ALTER TABLE table_name
MODIFY [column_name data_type DEFAULT expression]...);

์—ฌ๊ธฐ์„œ ๋‚˜์˜ค๋Š” data type ์ด๋‚˜ DEFAULT Expression์€ ์œ„์˜ CREATE TABLE์˜ ์นผ๋Ÿผ ํ˜•์‹๊ณผ ๋™์ผํ•˜๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ **์‚ฌ์› ํ…Œ์ด๋ธ”์˜ ename ์นผ๋Ÿผ์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•ด๋ณด์ž.

ALTER TABLE emp01
MODIFY (ename varchar(10);

์นผ๋Ÿผ ์ œ๊ฑฐ :: ALTER TABLE ... DROP COLUMN

์นผ๋Ÿผ์„ ์ œ๊ฑฐํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ์œ„์˜ ALTER ๋ช…๋ น์–ด๋“ค๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ์‰ฝ๋‹ค.

 

๊ทธ ์ด์œ ๋Š” ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค๋ฅธ ์ œ์•ฝ ์กฐ๊ฑด์ด ๋ถ™๊ฒŒ ๋˜์ง€๋งŒ ์‚ญ์ œ๋ฅผ ํ•˜๋Š” ๋ช…๋ น์–ด์—๋Š” ๋‹ค๋ฅธ ์ œ์•ฝ ์กฐ๊ฑด์ด ์—†์ด ์‚ญ์ œ ๋ช…๋ น๋งŒ ํ•ด์ฃผ๋ฉด ๋์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ALTER TABLE table_name
DROP COLUMN column_name;

๊ฐ„๋‹จใ„ทํ•˜๊ฒŒ ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ename ์นผ๋Ÿผ์„ ์—†์• ๋ณด์ž

ALTER TABLE emp01
DROP COLUMN ename;

ํ…Œ์ด๋ธ” ๋ช… ๋ณ€๊ฒฝ

ํ…Œ์ด๋ธ” ๋ช…์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด๋„ ์กด์žฌํ•œ๋‹ค.


์ •๋ง ๊ฐ„๋‹จํ•˜๋‹ค.

RENAME table_name01 to table_name02;

ํ…Œ์ด๋ธ” ์‚ญ์ œ

ํ…Œ์ด๋ธ”์„ ์‚ญ์ œ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  1. ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ
  2. ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ธฐ

DROP TABLE

ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ช…๋ น์–ด๋กœ

DROP TABLE table_name;

TRUNCATE TABLE

TRUNCATE TALBE table_name;

๋Œ“๊ธ€