Ability ๐ŸŒฑ/SQL

[SQL-์˜ค๋ผํด] ํ…Œ์ด๋ธ” ์ƒ์„ฑ create, ๊ตฌ์กฐ ๋ณ€๊ฒฝ alter, ์‚ญ์ œ drop, ์ฃผ์„ ์ถ”๊ฐ€

n_young 2022. 4. 18. 09:00

๋ฐ์ดํ„ฐ ์ •์˜์–ด DDL(Data Definition Langange)

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ, ์‚ญ์ œ

์ข…๋ฅ˜ ๊ธฐ๋Šฅ
CREATE TABLE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
ALTER TABLE ๊ธฐ์กด ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ, ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ
DROP TABLE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ…Œ์ด๋ธ” ์‚ญ์ œ

 

 


 

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

- ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋Š” ๊ณผ์ •

- ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ตฌ์กฐ ์ •์˜๋Š” ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜๋Š” ์นผ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ์ •์˜ํ•˜๋Š” ๊ณผ์ •

create table ํ…Œ์ด๋ธ”๋ช…
( column ๋ฐ์ดํ„ฐํƒ€์ž…(๊ธธ์ด) [ ๊ธฐ๋ณธ๊ฐ’ ] [ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ] 
[ , ... ];

 

ํ…Œ์ด๋ธ” ์ด๋ฆ„ ์ •์˜

- ๋ฌธ์ž๋กœ ์‹œ์ž‘, 30์ž ์ด๋‚ด

- ๋ฌธ์ž, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž( _, $, #) ์‚ฌ์šฉ ๊ฐ€๋Šฅ

- ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ ์—†์Œ, ์†Œ๋ฌธ์ž๋กœ ์ €์žฅํ•˜๋ ค๋ฉด ๋‹จ์ผ์ธ์šฉ๋ถ€ํ˜ธ '' ์ด์šฉ

- ๋™์ผ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ด๋ฆ„๊ณผ ์ค‘๋ณต ๋ถˆ๊ฐ€

- ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์นผ๋Ÿผ ์ด๋ฆ„์€ ๊ฐ€๋Šฅํ•˜๋ฉด ๊ฐ™์€ ์ด๋ฆ„ ์‚ฌ์šฉ

 

 

DEFAULT ๊ธฐ๋ณธ๊ฐ’ 

- ์นผ๋Ÿผ์˜ ์ž…๋ ฅ ๊ฐ’์ด ์ƒ๋žต๋  ๊ฒฝ์šฐ์— NULL ๋Œ€์‹  ์ž…๋ ฅ๋˜๋Š” ๊ธฐ๋ณธ ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋Šฅ

- ๊ธฐ๋ณธ๊ฐ’ : ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’, ํ‘œํ˜„์‹, SQLํ•จ์ˆ˜, SYSDATE, USER

- ์นผ๋Ÿผ์ด๋‚˜ ์˜์‚ฌ์นผ๋Ÿผ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

 

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

DESC

- ํ…Œ์ด๋ธ”์˜ ์ƒ์„ฑ ์—ฌ๋ถ€์™€ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด

- ์นผ๋Ÿผ ์ด๋ฆ„, ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ํฌ๊ธฐ, NOT NULL ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด

DESC[RIBE] ํ…Œ์ด๋ธ”๋ช…;

 

์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

CREATE TABLE AS ์„œ๋ธŒ์ฟผ๋ฆฌ

- CREATE TABLE ๋ช…๋ น๋ฌธ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ์ ˆ์„ ์ด์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ด ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๊ฐ€๋Šฅ

- CREATE TABLE ๋ช…๋ น๋ฌธ์—์„œ ์ง€์ •ํ•œ ์นผ๋Ÿผ ์ˆ˜, ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋ฐ˜๋“œ์‹œ ์ผ์น˜

- ์นผ๋Ÿผ ์ด๋ฆ„์„ ๋ช…์‹œํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์„œ๋ธŒ์ฟผ๋ฆฌ ์นผ๋Ÿผ ์ด๋ฆ„๊ณผ ๋™์ผ

- ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์€ NOT NULL ์กฐ๊ฑด๋งŒ ๋ณต์‚ฌ 

  ๊ธฐ๋ณธํ‚ค, ์ฐธ์กฐํ‚ค์™€ ๊ฐ™์€ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์€ ์‚ฌ์šฉ์ž์˜ ์žฌ์ •์˜ ํ•„์š”

- DEFAULT ์˜ต์…˜์—์„œ ์ •์˜ํ•œ ๊ฐ’์€ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌ

create table ํ…Œ์ด๋ธ”๋ช…
[ ์นผ๋Ÿผ๋ช… [ , ์นผ๋Ÿผ๋ช… ...]]
AS ์„œ๋ธŒ์ฟผ๋ฆฌ;


๊ธฐ์กด ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋ณต์‚ฌ

- ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ๋ฐ์ดํ„ฐ๋Š” ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ , ๊ธฐ์กด ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋งŒ ๋ณต์‚ฌ

- ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ WHERE ์กฐ๊ฑด์ ˆ์— ๊ฑฐ์ง“์ด ๋˜๋Š” ์กฐ๊ฑด์„ ์ง€์ •ํ•˜์—ฌ ์ถœ๋ ฅ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š๋„๋ก ์ง€์ •

create table ํ…Œ์ด๋ธ”๋ช…
as select *
   from source_table
   where ๊ฑฐ์ง“์ด ๋˜๋Š” ์กฐ๊ฑด;

๊ฑฐ์ง“์ด ๋˜๋Š” ์กฐ๊ฑด ์˜ˆ) where 1=2

 

 


 

ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋ณ€๊ฒฝ ALTER TABLE

- ์นผ๋Ÿผ ์ถ”๊ฐ€, ์‚ญ์ œ, ํƒ€์ž…์ด๋‚˜ ๊ธธ์ด์˜ ์žฌ์ •์˜

 

 

์นผ๋Ÿผ ์ถ”๊ฐ€

ALTER TABLE ... ADD

- ์ถ”๊ฐ€๋œ ์นผ๋Ÿผ์€ ํ…Œ์ด๋ธ”์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ์ƒ์„ฑ, ์œ„์น˜ ์ง€์ • ๋ถˆ๊ฐ€๋Šฅ

- ์ถ”๊ฐ€๋œ ์นผ๋Ÿผ์—๋„ ๊ธฐ๋ณธ ๊ฐ’ ์ง€์ • ๊ฐ€๋Šฅ

- ์ˆ˜์ •ํ•  ํ…Œ์ด๋ธ”์— ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์นผ๋Ÿผ ๊ฐ’์€ NULL๋กœ ์ž…๋ ฅ

alter table ํ…Œ์ด๋ธ”๋ช…
add ( ์นผ๋Ÿผ ๋ฐ์ดํ„ฐํƒ€์ž…(๊ธธ์ด) [ ๊ธฐ๋ณธ๊ฐ’ ] [ , ์นผ๋Ÿผ ๋ฐ์ดํ„ฐํƒ€์ž…(๊ธธ์ด) ...]);

 

์นผ๋Ÿผ ์‚ญ์ œ

ALTER TABLE ... DROP COLUMN

- ํ…Œ์ด๋ธ” ๋‚ด์˜ ํŠน์ • ์นผ๋Ÿผ๊ณผ ์นผ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ

- 2๊ฐœ ์ด์ƒ์˜ ์นผ๋Ÿผ์ด ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”์—์„œ๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ

- ํ•˜๋‚˜์˜ ์นผ๋Ÿผ๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ

alter table ํ…Œ์ด๋ธ”๋ช… drop column ์นผ๋Ÿผ๋ช…;

 

 

์นผ๋Ÿผ ๋ณ€๊ฒฝ

ALTER TABLE ... MODIFY

- ํ…Œ์ด๋ธ”์—์„œ ์นผ๋Ÿผ์˜ ํƒ€์ž…, ํฌ๊ธฐ, ๊ธฐ๋ณธ ๊ฐ’ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

- ๊ธฐ์กด์˜ ์นผ๋Ÿผ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์นผ๋Ÿผ ํƒ€์ž…์ด๋‚˜ ํฌ๊ธฐ ๋ณ€๊ฒฝ ์ž์œ 

- ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํƒ€์ž… ๋ณ€๊ฒฝ์€ CHAR์™€ VARCHAR2 ๋‚ด์—์„œ๋งŒ ๊ฐ€๋Šฅ

- ๊ธฐ๋ณธ ๊ฐ’์˜ ๋ณ€๊ฒฝ์€ ๋ณ€๊ฒฝ ํ›„์— ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์ ์šฉ

alter table ํ…Œ์ด๋ธ”๋ช…
modify ( ์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž…(๊ธธ์ด) [ ๊ธฐ๋ณธ๊ฐ’ ] [ , ์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž…(๊ธธ์ด) ... ]);

 

 

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

RENAME ... TO ...

- ๊ฐ์ฒด์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” DDL ๋ช…๋ น๋ฌธ

- ๋ทฐ, ์‹œํ€€์Šค, ๋™์˜์–ด ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

rename ์˜› ํ…Œ์ด๋ธ”๋ช… to ์ƒˆ ํ…Œ์ด๋ธ”๋ช…

 


 

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

 

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

DROP TABLE

- ๊ธฐ์กด ํ…Œ์ด๋ธ”๊ณผ ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ์‚ญ์ œ

- ์‚ญ์ œ๋œ ํ…Œ์ด๋ธ” ์นผ๋Ÿผ์— ๋Œ€ํ•ด ์ƒ์„ฑ๋œ ์ธ๋ฑ์Šค๋„ ํ•จ๊ป˜ ์‚ญ์ œ

- ์‚ญ์ œ๋œ ํ…Œ์ด๋ธ”๊ณผ ๊ด€๋ จ๋˜ ๋ทฐ์™€ ๋™์˜์–ด 'invalid' ์ƒํƒœ

- ์‚ญ์ œํ•  ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋‚˜ ๊ณ ์œ ํ‚ค๋ฅผ ๋‹ซ๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ญ์ œ ๋ถˆ๊ฐ€๋Šฅ

  ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”(์ž์‹ ํ…Œ์ด๋ธ”) ๋จผ์ € ์‚ญ์ œ

  DROP TABLE ๋ช…๋ น๋ฌธ ๋งˆ์ง€๋ง‰์— CASCADE CONSTRAINTS ์˜ต์…˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ๋™์‹œ์— ์‚ญ์ œ

drop table ํ…Œ์ด๋ธ”๋ช… [ cascade constraints ];

- cascade constraints : ์‚ญ์ œ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋‚˜ ๊ณ ์œ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ๋™์‹œ์— ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ์˜ต์…˜

 

TRUNCATE ๋ช…๋ น๋ฌธ

- ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ , ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ์™€ ํ• ๋‹น๋œ ๊ณต๊ฐ„๋งŒ ์‚ญ์ œ

- ํ…Œ์ด๋ธ”์— ์ƒ์„ฑ๋œ ์ œ์•ฝ์กฐ๊ฑด๊ณผ ์—ฐ๊ด€๋œ ์ธ๋ฑ์Šค, ๋ทฐ, ๋™์˜์–ด๋Š” ์œ ์ง€

truncate table ํ…Œ์ด๋ธ”๋ช…;

 

 

+ DELETE ๋ช…๋ น๋ฌธ VS TRUNCATE ๋ช…๋ น๋ฌธ

DELETE ๋ช…๋ น๋ฌธ

- ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด DML

- ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น, ROLLBACK ๊ฐ€๋Šฅ

- WHERE ์ ˆ์„ ์ด์šฉํ•˜์—ฌ ํŠน์ • ํ–‰๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ

 

TRUNCATE ๋ช…๋ น๋ฌธ

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

- ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋ฟ ์•„๋‹ˆ๋ผ, ๋ฌผ๋ฆฌ์ ์ธ ์ €์žฅ ๊ณต๊ฐ„๊นŒ์ง€ ๋ฐ˜ํ™˜

- DDL์ด๋ฏ€๋กœ ROLLBACK ๋ถˆ๊ฐ€๋Šฅ

- WHERE ์ ˆ์„ ์ด์šฉํ•˜์—ฌ ํŠน์ • ํ–‰๋งŒ ์‚ญ์ œ ๋ถˆ๊ฐ€๋Šฅ

 

+ ALTER TABLE .. DROP COLUMN  VS  DROP TABLE

ALTER TABLE ... DROP COLUMN

- ํ…Œ์ด๋ธ” ๋‚ด์˜ ํŠน์ • ์นผ๋Ÿผ๊ณผ ์นผ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ

 

DROP TABLE

- ๊ธฐ์กด ํ…Œ์ด๋ธ”๊ณผ ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ์‚ญ์ œ

 


 

์ฃผ์„ ์ถ”๊ฐ€

 

์ฃผ์„ ์ถ”๊ฐ€

COMMENT ON TABLE ... IS

- ํ…Œ์ด๋ธ”์ด๋‚˜ ์นผ๋Ÿผ์— ์ตœ๋Œ€ 2000 ๋ฐ”์ดํŠธ๊นŒ์ง€ ์ฃผ์„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

 

> ํ…Œ์ด๋ธ”์— ์ฃผ์„ ์ถ”๊ฐ€

comment on table ํ…Œ์ด๋ธ”๋ช…
is '์ฃผ์„';

 

> ์นผ๋Ÿผ์— ์ฃผ์„ ์ถ”๊ฐ€

comment on column ํ…Œ์ด๋ธ”๋ช….์นผ๋Ÿผ๋ช…
is '์ฃผ์„';

 

์ถ”๊ฐ€๋œ ์ฃผ์„ ํ™•์ธ 

- ALL_COL_COMMENTS, USER_COL_COMMENTS, ALL_TAB_COMMENTS 

- ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ ์งˆ์˜ -> ๋Œ€๋ฌธ์ž๋กœ ๊ฒ€์ƒ‰!!

 

ALL_COL_COMMENTS

- ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ด๋ธ” ์นผ๋Ÿผ ์กฐํšŒ (์ด๋ฆ„, ์นผ๋Ÿผ๋ช…)

select *
from all_col_commnets
where table_name = '๋Œ€๋ฌธ์ž ํ…Œ์ด๋ธ”๋ช…';

 

USER_COL_COMMENTS

- ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ์Šคํ‚ค๋งˆ์— ์žˆ๋Š” ํ…Œ์ด๋ธ” ์นผ๋Ÿผ ์กฐํšŒ

select *
from user_col_commnets
where table_name = '๋Œ€๋ฌธ์ž ํ…Œ์ด๋ธ”๋ช…';

 

 ALL_TAB_COMMENTS 

- ๋ชจ๋“  ํ…Œ์ด๋ธ” ์ด๋ฆ„ ํ™•์ธ

 select *
 from all_tab_comments
 where table_name = '๋Œ€๋ฌธ์ž ํ…Œ์ด๋ธ”๋ช…'

 

 

 

 


์ฐธ๊ณ ๋„์„œ : ์˜ค๋ผํด ์ค‘์‹ฌ์˜ SQL๋ฐฐ์›€ํ„ฐ, ์šฐ์šฉํƒœ ์™ธ ๊ณต์ €, ์ƒ๋Šฅ์ถœํŒ์‚ฌ, 2007๋…„

๋ฐ˜์‘ํ˜•