09. DDL(ALTER, DROP) -2

CHOISUJINยท2023๋…„ 1์›” 20์ผ
0
post-thumbnail

DDL(Data Definition Language)

๐Ÿ“ ALTER

ํ…Œ์ด๋ธ”์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ!
1. ์ œ์•ฝ์กฐ๊ฑด (์ถ”๊ฐ€/์‚ญ์ œ)
2. ์ปฌ๋Ÿผ (์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ)
3. ์ด๋ฆ„ ๋ณ€๊ฒฝ(ํ…Œ์ด๋ธ”๋ช…, ์ œ์•ฝ์กฐ๊ฑด๋ช…, ์ปฌ๋Ÿผ๋ช…)

1. ์ œ์•ฝ์กฐ๊ฑด(์ถ”๊ฐ€/์‚ญ์ œ)

- UNIQUE,PK,FK,CHECK ์ถ”๊ฐ€/์‚ญ์ œ

  • ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€
    ALTER TABLE ํ…Œ์ด๋ธ”๋ช…
    ADD [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…] ์ œ์•ฝ์กฐ๊ฑด(์ง€์ •ํ• ์ปฌ๋Ÿผ๋ช…)
    [REFERENCES ํ…Œ์ด๋ธ”๋ช… [(์ปฌ๋Ÿผ๋ช…)]]; <-- FK์ธ ๊ฒฝ์šฐ ์ถ”๊ฐ€
  • NOT NULL์„ ์ œ์™ธํ•œ ์ œ์•ฝ์กฐ๊ฑด์€ ์ด ๋ฐฉ๋ฒ• ์‚ฌ์šฉํ•จ!
ALTER TABLE DEPT_COPY 
ADD CONSTRAINT DEPT_COPY_TITLE_U UNIQUE(DEPT_TITLE);
  • ์ œ์•ฝ์กฐ๊ฑด ์‚ญ์ œ
    ALTER TABLE ํ…Œ์ด๋ธ”๋ช…
    DROP CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…;
ALTER TABLE DEPT_COPY 
DROP CONSTRAINT DEPT_COPY_TITLE_U; 
  • ์ œ์•ฝ์กฐ๊ฑด๋ช… ์ƒ๋žตํ–ˆ์œผ๋ฉด?? -> ์ž๋™์œผ๋กœ ์ด๋ฆ„ ์ƒ์„ฑ๋จ -> ๊ทธ ์ด๋ฆ„ ์ฐพ์•„์„œ ์ ์–ด์•ผํ•ด์„œ ๋ฒˆ๊ฑฐ๋กœ์›€
  • ์ˆ˜์ •์€ ๋ณ„๋„ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ญ์ œ ํ›„ ์ถ”๊ฐ€๋ฅผ ์ด์šฉํ•ด์„œ ์ˆ˜์ •!

NOT NULL ์ถ”๊ฐ€/์‚ญ์ œ

NOT NULL ์ œ์•ฝ์กฐ๊ฑด์€ ์ƒˆ๋กœ์šด ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปฌ๋Ÿผ ์ž์ฒด์— NULL ํ—ˆ์šฉ/๋ฒ„ํ—ˆ์šฉ์„ ์ œ์–ดํ•˜๋Š” ์„ฑ์งˆ ๋ณ€๊ฒฝ์˜ ํ˜•ํƒœ๋กœ ์ธ์‹๋จ! ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์ œ์•ฝ์กฐ๊ฑด์ด๋ž‘ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ ์‚ฌ์šฉ! --> MODIFY

  • NOT NULL ์ถ”๊ฐ€
ALTER TABLE DEPT_COPY
MODIFY DEPT_TITLE NOT NULL; 
-- DEPT_TITLE ์ปฌ๋Ÿผ์„ NOT NULL ์ œ์•ฝ์กฐ๊ฑด ์„ค์ •์œผ๋กœ ์ˆ˜์ •
  • NOT NULL ์‚ญ์ œ
ALTER TABLE DEPT_COPY
MODIFY DEPT_TITLE NULL; --DEPT_TITLE ์ปฌ๋Ÿผ์„ NOT NULL ์ œ์•ฝ์กฐ๊ฑด ํ•ด์ œ

2. ์ปฌ๋Ÿผ(์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ)

  • ์ปฌ๋Ÿผ ์ถ”๊ฐ€
    ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD(์ปฌ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… [DEFAULT '๊ฐ’']);
ALTER TABLE DEPT_COPY ADD(CNAME VARCHAR2(30));
  • ์ปฌ๋Ÿผ ์ˆ˜์ •

1) ๋ฐ์ดํ„ฐํƒ€์ž… ๋ณ€๊ฒฝ
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ์ปฌ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž…;

ALTER TABLE DEPT_COPY MODIFY DEPT_ID VARCHAR2(3);

2) DEFAULT ๋ณ€๊ฒฝ
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ์ปฌ๋Ÿผ๋ช… DEFAULT '๊ฐ’';

ALTER TABLE DEPT_COPY MODIFY LNAME DEFAULT 'KOREA';
UPDATE DEPT_COPY 
SET LNAME = DEFAULT 
WHERE LNAME = 'ํ•œ๊ตญ'

--> ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€ํ•˜์ง€๋Š” ์•Š์Œ! --> ์•ž์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•จ

3) NULL ์—ฌ๋ถ€ ๋ณ€๊ฒฝ
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ์ปฌ๋Ÿผ๋ช… NULL / NOT NULL;

  • ์ปฌ๋Ÿผ ์‚ญ์ œ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP(์‚ญ์ œํ• ์ปฌ๋Ÿผ๋ช…);
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์‚ญ์ œํ• ์ปฌ๋Ÿผ๋ช…;

=> ์˜๋ฏธ๋Š” ๊ฐ™์œผ๋‚˜ ํ‘œ๊ธฐ๋ฒ•๋งŒ ๋‹ค๋ฆ„

+ ํ…Œ์ด๋ธ”์€ ์ตœ์†Œ 1๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์ด ์กด์žฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ๋‹ค ์‚ญ์ œํ•  ์ˆœ ์—†๋‹ค.

ALTER TABLE DEPT_COPY DROP(LNAME);
ALTER TABLE DEPT_COPY DROP COLUMN CNAME;
CREATE TABLE DEPT_COPY
AS SELECT * FROM DEPARTMENT;

--> ์ปฌ๋Ÿผ๋ช…, ๋ฐ์ดํ„ฐํƒ€์ž…, NOT NULL ์—ฌ๋ถ€๋งŒ ๋ณต์‚ฌ๋œ๋‹ค

3. ์ด๋ฆ„ ๋ณ€๊ฒฝ(ํ…Œ์ด๋ธ”๋ช…, ์ปฌ๋Ÿผ๋ช…, ์ œ์•ฝ์กฐ๊ฑด๋ช…)

  • ์ปฌ๋Ÿผ๋ช… ๋ณ€๊ฒฝ
ALTER TABLE DEPT_COPY RENAME COLUMN DEPT_TITLE TO DEPT_NAME;
  • ์ œ์•ฝ์กฐ๊ฑด๋ช… ๋ณ€๊ฒฝ
ALTER TABLE DEPT_COPY RENAME CONSTRAINT D_COPY_PK TO DEPT_COPY_PK;
  • ํ…Œ์ด๋ธ”๋ช… ๋ณ€๊ฒฝ
ALTER TABLE DEPT_COPY RENAME TO DCOPY;

๐Ÿ“ DROP

ํ…Œ์ด๋ธ” ์‚ญ์ œ!
DROP TABLE ํ…Œ์ด๋ธ”๋ช… [CASCADE CONSTRAINTS];

  • 1) ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ” ์‚ญ์ œ
DROP TABLE DCOPY;
  • 2) ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋œ ํ…Œ์ด๋ธ” ์‚ญ์ œ
CREATE TABLE TB1(
	TB1_PK NUMBER PRIMARY KEY,
	TB1_COL NUMBER
);

CREATE TABLE TB2(
	TB2_PK NUMBER PRIMARY KEY,
	TB2_COL NUMBER REFERENCES TB1 -- FK ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€
);

DROP TABLE TB1; 
-- unique/primary keys in table referenced by foreign keys

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
1. ์ž์‹, ๋ถ€๋ชจ ํ…Œ์ด๋ธ” ์ˆœ์„œ๋กœ ์‚ญ์ œ

DROP TABLE TB2; 
DROP TABLE TB1; 
  1. ALTER๋ฅผ ์ด์šฉํ•ด์„œ FK ์ œ์•ฝ์กฐ๊ฑด ์‚ญ์ œ ํ›„ TB1 ์‚ญ์ œ
ALTER TABLE TB2 
DROP CONSTRAINT SYS_C007292;

DROP TABLE TB1; 
  1. DROP TABLE ์‚ญ์ œ์˜ต์…˜ CASCADE CONSTRAINTS ์‚ฌ์šฉ
    -> CASCADE CONSTRAINTS : ์‚ญ์ œํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ฒฐ๋œ FK ์ œ์•ฝ์กฐ๊ฑด์„ ๋ชจ๋‘ ์‚ญ์ œ
DROP TABLE TB1 CASCADE CONSTRAINTS;

/ DDL ์ฃผ์˜ ์‚ฌํ•ญ /
1) DDL์€ COMMIT / ROLLBACK์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.
-> ALTER, DROP์„ ์‹ ์ค‘ํ•˜๊ฒŒ ์ง„ํ–‰ํ•ด์•ผ ํ•จ
2) DDL๊ณผ DML๊ตฌ๋ฌธ์„ ์„ž์–ด์„œ ์ˆ˜ํ–‰ํ•˜๋ฉด ์•ˆ๋œ๋‹ค!
-> DDL์€ ์ˆ˜ํ–‰ ์‹œ ์กด์žฌํ•˜๊ณ  ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์„ ๋ชจ๋‘ DB์— ๊ฐ•์ œ COMMIT์‹œํ‚ด
-> DDL์ด ์ข…๋ฃŒ๋œ ํ›„ DML ๊ตฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒ์žฅ

profile
๋งค์ผ๋งค์ผ ๋จธ๋ฆฌ ํ„ฐ์ง€๋Š” ์ค‘ แ•™(โ€ขฬ€โ€ธโ€ขฬโ€ถ)แ•—

0๊ฐœ์˜ ๋Œ“๊ธ€