๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - DDL(Data Definition Language)

2020. 9. 19. 13:29ใ†์ „๊ณต ๊ณผ๋ชฉ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - DDL(Data Definition Language)

 

์šฐ๋ฆฌ๊ฐ€ ์•ž์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ ๊ธฐ์ „์— ์•ž์— SQL > ์ˆ˜์‹์ด ๋ถ™์—ˆ๋‹ค.

์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๋ช…๋ น์–ด์ด๋‹ค.

 

SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

์ด๋Š” ๋ฐ์ดํ„ฐ ์ •์˜, ์กฐ์ž‘, ์ œ์–ด ๋ชจ๋‘์— ํ™œ์šฉ๋œ๋‹ค.

 

๋จผ์ € ์ •์˜๋ฅผ ์‚ดํŽด๋ณด์ž.

์ด๋ฅผ DDL(Data Definition Laguage)๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๋ง ๊ทธ๋Œ€๋กœ ์ •์˜ํ•˜๋Š”๋ฐ ์“ฐ์ธ๋‹ค.

 

 

DDL์˜ ์ค‘์š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์€ ์ด๋ ‡๋‹ค.

CHARACTER(s), VARCHAR(s), NUMERIC, DATETIME

์—ฌ๊ธฐ์„œ VARCHAR๋Š” CHAR๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด ์ •๋ณด๋กœ์จ ๊ฐ€๋ณ€์ ์œผ๋กœ ๊ธธ์ด๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

VARCHAR์œ ํ˜•์€ ๊ฐ€๋ณ€ ๊ธธ์ด์ด๋ฏ€๋กœ ํ•„์š”ํ•œ ์˜์—ญ์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ๋ฟ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ •์˜๋œ ๊ธธ์ด์™€ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ธธ์ด์— ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ์นผ๋Ÿผ์— ์ ํ•ฉํ•˜๋‹ค. ์ €์žฅ ์ธก๋ฉด์—์„œ๋„๋” ์ž‘์€ ์˜์—ญ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

CHAR ์œ ํ˜•์˜ 'BB' =='BB    ' ๋ฅผ ๋น„๊ตํ•œ๋‹ค๋ฉด ๋‘˜์ด ๊ฐ™์ง€๋งŒ VARCHAR ์œ ํ˜•์˜ 'BB' == 'BB     '๋ฅผ ๋น„๊ตํ•˜๋ฉด ๋‘˜์ด ๋‹ค๋ฅด๋‹ค.

VARCHAR๋Š” ๊ณต๋ฐฑ๋„ ๋ฌธ์ž๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

ํ…Œ์ด๋ธ”์—๋Š” ์—ฌ๋Ÿฌ ์ •๋ณด๋“ค์ด ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์ œ๋ถ€ํ„ฐ ์ด ์ •๋ณด๋“ค์„ ์นผ๋Ÿผ(column)์ด๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์ด๋‹ค.

 

ํ•œ ํ…Œ์ด๋ธ” ์•ˆ์— ์นผ๋Ÿผ ์ด๋ฆ„์€ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ์˜ ์นผ๋Ÿผ ์ด๋ฆ„์€ ๊ฐ™์„ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์นผ๋Ÿผ์€ ๊ธฐ๋ณธํ‚ค์™€ ์™ธ๋ž˜ํ‚ค์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ์—, ์ค‘์š”ํ•œ ์นผ๋Ÿผ๋“ค์ด๋‹ค.

 

ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๊ทœ์น™์„ ์‚ดํŽด๋ณด์ž.

ํ…Œ์ด๋ธ”๋ช…์€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ๊ฒน์น˜๋ฉด ์•ˆ๋˜๊ณ , ํ…Œ์ด๋ธ” ๋‚ด๋ถ€์˜ ์นผ๋Ÿผ๋“ค์€ ์ด๋ฆ„์ด ์ค‘๋ณต๋˜๋ฉด ์•ˆ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์นผ๋Ÿผ๋“ค์€ ์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„๋˜๊ณ  ํ•ญ์ƒ ๋์€ ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๋๋‚œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋กœ ์‹œ์ž‘๋˜์–ด์•ผํ•˜๊ณ , -๊ฐ™์€ ํŠน์ˆ˜ ๋ฌธ์ž๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

์ด์ œ ํ…Œ์ด๋ธ” ๋‚ด๋ถ€์—์„œ ์“ฐ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์กฐ๊ฑด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

 

PRIVARY KEY(๊ธฐ๋ณธํ‚ค)

ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค์ด๋‹ค.

ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜์˜ ๊ธฐ๋ณธํ‚ค๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์นผ๋Ÿผ์—๋Š” NULL์„ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋‹ค. ๊ธฐ๋ณธํ‚ค๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ž๋™์œผ๋กœ UNIQUE ์ธ๋ฑ์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.(์•„๋ž˜์˜ UNIQUE)

 

UNIQUE(๊ณ ์œ ํ‚ค)

๊ธฐ๋ณธํ‚ค๋ฅผ ์ •์˜ํ•˜๋Š” ํ‚ค. 

 

NOT NULL

NULL์ž…๋ ฅ ๊ธˆ์ง€ํ•œ๋‹ค. ๋””ํดํŠธ ์ƒํƒœ์—์„œ๋Š” ๋ชจ๋“  ์นผ๋Ÿผ์—์„œ NULL์„ ํ—ˆ๊ฐ€ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์ž…๋ ฅ์ด ํ•„์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

CHECK

์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ๋‹ค. 

 

FOREIGN KEY

์™ธ๋ž˜ํ‚ค๋กœ, ๊ธฐ๋ณธํ‚ค๋ฅผ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค๋กœ ๋ณต์‚ฌํ•˜๋Š” ๊ฒฝ์šฐ ์ƒ๊ธด๋‹ค.

 

 

์ด์ œ ์‹ค์ „์œผ๋กœ ๊ฐ€๋ณด์ž.

 

 

 

1. ๋‹ค์Œ๊ณผ ๊ฐ™์ด BUSEO ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ ํ›„, ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜์‹œ์˜ค.

sol) SQL > CREATE TABLE BUSEO(

          DEPTNO             NUMBER           NOT NULL,

          DEPTNAME         CHAR(10),  

          FLOOR               NUMBER,

          PRIMARY KEY(DEPTNO)

);

 

INSERT INTO BUSEO VALUES(1, 'MARKETING', 8);

INSERT INTO BUSEO VALUES(2, 'PLANNING', 10);

INSERT INTO BUSEO VALUES(3, 'DEVELOPING', 9);

INSERT INTO BUSEO VALUES (4, 'GENERAL', 7);

 

 

 

2. ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ๋ณด์ด์‹œ์˜ค.

sol) SQL > desc buseo; // desc๋Š” ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

 

 

 

3. BUSEO ํ…Œ์ด๋ธ”์— 'HOBBY'์—ด์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•˜์‹œ์˜ค.

HOBBY CHAR(8)

BIGO CHAR(8)

 

sol) SQL > alter table buseo add hobby char(8);

      SQL > alter table buseo add bigo char(8); // add๋Š” ์นผ๋Ÿผ์„ ๋’ค์— ์•ˆ์ ์–ด๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

4. BUSEO ํ…Œ์ด๋ธ”์— 'HOBBY'์—ด์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•˜์‹œ์˜ค.

HOBBY VARCHAR2(10);

 

sol) SQL > alter table buseo modify hobby varchar2(10); // modify์—ญ์‹œ ์นผ๋Ÿผ์„ ๋’ค์— ์•ˆ์ ๊ณ  ๋ฐ”๋กœ ์ ๋Š”๋‹ค.

 

 

 

5. BUSEO ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ BUSEO1์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹œ์˜ค.

 

sol) SQL > rename buseo to buseo1;

 

 

 

6. BIGO ํ•„๋“œ ์ด๋ฆ„์„ REMARK๋กœ ๋ณ€๊ฒฝํ•˜์‹œ์˜ค.

 

sol) SQL > alter table buseo1 rename column bigo to remark; //rename์€ ๋’ค์— column์„ ์ ์–ด์•ผ ํ•œ๋‹ค.

 

 

 

7. buseo1์˜ ๋‚ด์šฉ์„ buseo2๋กœ ๋ณต์‚ฌํ•˜์‹œ์˜ค.

 

sol) SQL > create table buseo2 as select * from buseo1;

 

 

 

8. buseo2ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‚ด์šฉ์„ ๋ชจ๋‘ ์‚ญ์ œํ•˜์‹œ์˜ค.

 

sol) truncate table buseo2;

 

 

 

9. buseo1์—์„œ marketing๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ์‹œ์˜ค.

 

sol) delete from buseo1 where deptno = 1 // ๊ธฐ๋ณธํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šด๋‹ค.