ALTER & DROP(DDL_Data Definition Language)

Joy๐ŸŒฑยท2023๋…„ 1์›” 22์ผ
0

๐Ÿš Oracle

๋ชฉ๋ก ๋ณด๊ธฐ
10/11
post-thumbnail

๐Ÿ’โ€โ™€๏ธ DDL(Data Definition Language)์ด๋ž€,
ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด

๐Ÿ’โ€โ™€๏ธ ALTER๋ž€,
๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ตฌ๋ฌธ

  • ์ปฌ๋Ÿผ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ, ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ
  • ์ปฌ๋Ÿผ๋ช…, ํ…Œ์ด๋ธ”๋ช…, ์ œ์•ฝ์กฐ๊ฑด๋ช… ๋ณ€๊ฒฝ

๐Ÿ’โ€โ™€๏ธ DROP์ด๋ž€,
๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ตฌ๋ฌธ


๐Ÿ‘€ ์ปฌ๋Ÿผ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ

๐Ÿ‘‰ ์ปฌ๋Ÿผ ์ถ”๊ฐ€

[1] DEPT_COPY ํ…Œ์ด๋ธ”์— LNAME ์ปฌ๋Ÿผ ์ถ”๊ฐ€

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD (์ปฌ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž…());

ALTER TABLE DEPT_COPY
ADD (LNAME VARCHAR2(20));

[2] ์ปฌ๋Ÿผ ์ƒ์„ฑ ์‹œ DEFAULT ๊ฐ’ ์ง€์ •

ALTER TABLE DEPT_COPY
ADD (CNAME VARCHAR2(20) DEFAULT 'ํ•œ๊ตญ');

๐Ÿ‘‰ ์ปฌ๋Ÿผ ์ˆ˜์ •

[1] ์ปฌ๋Ÿผ ์ž๋ฃŒํ˜• ์ˆ˜์ •

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•();

ALTER TABLE DEPT_COPY2
MODIFY DEPT_ID CHAR(3)
MODIFY DEPT_TITLE VARCHAR2(30)
MODIFY LOCATION_ID VARCHAR2(2); 
>>> ํ…Œ์ด๋ธ”์—์„œ ์ž๋ฃŒํ˜• ๋ฐ”๋€ ๊ฒƒ ํ™•์ธ ๊ฐ€๋Šฅ
>>> ์ปฌ๋Ÿผ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒฝ์šฐ, ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ปฌ๋Ÿผ ๊ฐ’์ด ์—†์„ ๋•Œ๋งŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
ALTER TABLE DEPT_COPY2
MODIFY DEPT_TITLE VARCHAR2(10);
>>> ์ด๋ฏธ ์ตœ๋Œ€ 16byte๊นŒ์ง€ ์ด์šฉ ์ค‘์ด๋ฏ€๋กœ ์‹คํ–‰ ์‹œ, 
>>> '์ผ๋ถ€ ๊ฐ’์ด ๋„ˆ๋ฌด ์ปค์„œ ์—ด ๊ธธ์ด๋ฅผ ์ค„์ผ ์ˆ˜ ์—†์Œ' ์˜ค๋ฅ˜

[2] DEFAULT ๊ฐ’ ์ˆ˜์ •

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ์ปฌ๋Ÿผ๋ช… DEFAULT ๋””ํดํŠธ๊ฐ’;

ALTER TABLE DEPT_COPY
MODIFY CNAME DEFAULT '๋ฏธ๊ตญ';
-- DEFAULT๊ฐ’์ด์—ˆ๋˜ 'ํ•œ๊ตญ'์„ '๋ฏธ๊ตญ'์œผ๋กœ ์ˆ˜์ • ์ค‘
SELECT
        DC.*
    FROM DEPT_COPY DC;
    >>> ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ–‰๋“ค์˜ ๋””ํดํŠธ๊ฐ’์„ 'ํ•œ๊ตญ'์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹Œ,
    >>> ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ํ–‰๋ถ€ํ„ฐ '๋ฏธ๊ตญ'์ด ๋””ํดํŠธ๊ฐ’
INSERT
    INTO DEPT_COPY
VALUES
(
    'D0', '์ƒ์‚ฐ๋ถ€', 'L2', DEFAULT 
    >>> ๋””ํดํŠธ ๊ฐ’์„ '๋ฏธ๊ตญ'์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‚œ ๋’ค์— ๊ฐ’์„ ์‚ฝ์ž…ํ–ˆ์œผ๋ฏ€๋กœ ์ด CNAME์˜ ๊ธฐ๋ณธ๊ฐ’์€ '๋ฏธ๊ตญ'
);

[3] ์ปฌ๋Ÿผ๋ช… ๋ณ€๊ฒฝ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… RENAME COLUMN ์ปฌ๋Ÿผ๋ช… TO ์ƒˆ๋กœ์šด์ปฌ๋Ÿผ๋ช…;

ALTER TABLE DEPT_COPY3
RENAME COLUMN DEPT_ID TO DEPT_CODE;
>>> ์ปฌ๋Ÿผ๋ช… DEPT_ID๊ฐ€ DEPT_CODE๋กœ ๋ณ€๊ฒฝ๋จ

๐Ÿ‘‰ ์ปฌ๋Ÿผ ์‚ญ์ œ

[1] DEPT_COPY ํ…Œ์ด๋ธ”์˜ LNAME์ปฌ๋Ÿผ ์‚ญ์ œ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์ปฌ๋Ÿผ๋ช…;

ALTER TABLE DEPT_COPY
DROP COLUMN LNAME;

[2] ๋ชจ๋“  ์ปฌ๋Ÿผ ์‚ญ์ œ ํ…Œ์ŠคํŠธ

ALTER TABLE DEPT_COPY2
DROP COLUMN DEPT_TITLE; -- DEPT_TITLE ์ปฌ๋Ÿผ ์‚ญ์ œ

ALTER TABLE DEPT_COPY2
DROP COLUMN LOCATION_ID; -- LOCATION_ID ์ปฌ๋Ÿผ ์‚ญ์ œ
>>> ํ…Œ์ด๋ธ”์— ์ตœ์†Œ ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์ด ๋‚จ์•„์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์—ด์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Œ

ALTER TABLE DEPT_COPY2
DROP COLUMN DEPT_ID;
>>> ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚จ์•„์žˆ๋˜ DEPT_ID์„ ์‚ญ์ œ ์‹œ๋„ ์‹œ, 'ํ…Œ์ด๋ธ”์— ๋ชจ๋“  ์—ด๋“ค์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค'

[3] ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ์ปฌ๋Ÿผ ์‚ญ์ œ

โœ… ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” TB1 ํ…Œ์ด๋ธ” ์ƒ์„ฑ
CREATE TABLE TB1(
    PK NUMBER PRIMARY KEY,
    FK NUMBER REFERENCES TB1, >>> ์ž๊ธฐ์ž์‹  ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐ 
    						  >>> ์ปฌ๋Ÿผ๋ช…์„ ๋ช…์‹œํ•˜์ง€ ์•Š์•˜์„ ๋•Œ, ๊ทธ ํ…Œ์ด๋ธ”์˜ PK๋ฅผ ์ฐธ์กฐ. 
                              >>> ๋”ฐ๋ผ์„œ PK NUMBER PRIMARY KEY ์ฐธ์กฐ
    COL1 NUMBER,
    CHECK(PK > 0 AND COL1 > 0)
);
โœ… ์ปฌ๋Ÿผ ์‚ญ์ œ ์‹œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ปฌ๋Ÿผ์ด ์žˆ๋‹ค๋ฉด ์‚ญ์ œ X
ALTER TABLE TB1
DROP COLUMN PK;
>>> '๋ถ€๋ชจ ํ‚ค ์—ด์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค' ์˜ค๋ฅ˜
โœ… ์ œ์•ฝ ์กฐ๊ฑด๋„ ํ•จ๊ป˜ ์‚ญ์ œํ•œ๋‹ค๋ฉด ์ปฌ๋Ÿผ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅ (์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ ์‚ฌ์šฉ)

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์ปฌ๋Ÿผ๋ช… CASCADE CONSTRAINTS;
CASCADE CONSTRAINTS : ์ œ์•ฝ์กฐ๊ฑด์— ๋Œ€ํ•œ ์ข…์†์„ฑ๋„ ํ•จ๊ป˜ ์‚ญ์ œ

ALTER TABLE TB1
DROP COLUMN PK CASCADE CONSTRAINTS;

๐Ÿ‘€ ํ…Œ์ด๋ธ” ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ

๐Ÿ‘‰ ํ…Œ์ด๋ธ” ์ถ”๊ฐ€

[1] MEMBER ํ…Œ์ด๋ธ” ์ถ”๊ฐ€ (CREATE)

CREATE TABLE ํ…Œ์ด๋ธ”๋ช… (์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(ํฌ๊ธฐ), ์ปฌ๋Ÿผ๋ช… ์ž๋ฃŒํ˜•(ํฌ๊ธฐ), ...);

CREATE TABLE MEMBER(
  MEMBER_ID VARCHAR2(20),
  MEMBER_PWD VARCHAR2(20),
  MEMBER_NAME VARCHAR2(20)
);

๐Ÿ‘‰ ํ…Œ์ด๋ธ” ์ˆ˜์ •

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

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… RENAME TO ์ƒˆ๋กœ์šดํ…Œ์ด๋ธ”๋ช…;

ALTER TABLE DEPT_COPY3
RENAME TO DEPT_TEST;
>>> ํ…Œ์ด๋ธ”๋ช… DEPT_COPY3์ด DEPT_TEST๋กœ ๋ณ€๊ฒฝ๋จ
SELECT
        DC.*
    FROM DEPT_COPY3 DC;
    >>> ํ…Œ์ด๋ธ”๋ช…์ด ๋ณ€๊ฒฝ๋˜์–ด ์กฐํšŒ๋ถˆ๊ฐ€. 'ํ…Œ์ด๋ธ” ๋˜๋Š” ๋ทฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค' ์˜ค๋ฅ˜
SELECT
        DT.*
    FROM DEPT_TEST DT; 
    >>> ์ˆ˜์ •๋œ ํ…Œ์ด๋ธ”๋ช…์œผ๋กœ ์กฐํšŒํ•ด์•ผํ•จ

๐Ÿ‘‰ ํ…Œ์ด๋ธ” ์‚ญ์ œ

[1] DEPT_TEST ํ…Œ์ด๋ธ” ์‚ญ์ œ

DROP TABLE ํ…Œ์ด๋ธ”๋ช… CASCADE CONSTRAINTS;

DROP TABLE DEPT_TEST CASCADE CONSTRAINTS;
>>> CASCADE CONSTRAINTS : ์ œ์•ฝ์กฐ๊ฑด์— ๋Œ€ํ•œ ์ข…์†์„ฑ๋„ ํ•จ๊ป˜ ์‚ญ์ œ
SELECT
        DT.*
    FROM DEPT_TEST DT; 
    >>> ํ…Œ์ด๋ธ”์ด ์‚ญ์ œ๋˜์–ด 'ํ…Œ์ด๋ธ” ๋˜๋Š” ๋ทฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค' ์˜ค๋ฅ˜

๐Ÿ‘€ ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ

๐Ÿ‘‰ ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€

[1] DEPT_ID ์ปฌ๋Ÿผ์— PRIMARY KEY ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… ์ œ์•ฝ์กฐ๊ฑด(์ปฌ๋Ÿผ๋ช…);

ALTER TABLE DEPT_COPY2
ADD CONSTRAINT PK_DET_ID2 PRIMARY KEY(DEPT_ID);

[2] DEPT_TITLE ์ปฌ๋Ÿผ์— UNIQUE ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€

ALTER TABLE DEPT_COPY2
ADD CONSTRAINT UN_DEPT_TITLE2 UNIQUE(DEPT_TITLE);

[3] DEPT_TITLE ์ปฌ๋Ÿผ์— NOT NULL ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€ ๐Ÿ”ฅ์ค‘์š”๐Ÿ”ฅ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ์ปฌ๋Ÿผ๋ช… CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… ์ œ์•ฝ์กฐ๊ฑด;

ALTER TABLE DEPT_COPY2
MODIFY DEPT_TITLE CONSTRAINT NN_DEPT_TITLE2 NOT NULL; 

๐Ÿ“Œ Ref.

* NOT NULL ์ œ์•ฝ์กฐ๊ฑด์˜ ๊ฒฝ์šฐ ADD๊ฐ€ ์•„๋‹Œ MODIFY(์ˆ˜์ •) ์‚ฌ์šฉ

[4] ํ…Œ์ด๋ธ” ๋ ˆ๋ฒจ๋กœ ์ œ์•ฝ ์กฐ๊ฑด ์„ค์ • (NOT NULL์€ only in ์ปฌ๋Ÿผ๋ ˆ๋ฒจ)

CREATE TABLE CONST_EMP (
  ENAME VARCHAR2(20) NOT NULL,
  ENO VARCHAR2(15) NOT NULL,
  MARRIAGE CHAR(1) DEFAULT 'N',
  EID CHAR(3),
  EMAIL VARCHAR2(30),
  JID CHAR(2),
  MID CHAR(3),
  DID CHAR(2),
  -- ํ…Œ์ด๋ธ” ๋ ˆ๋ฒจ๋กœ ์ œ์•ฝ ์กฐ๊ฑด ์„ค์ •
  CONSTRAINT CK_MARRIAGE CHECK(MARRIAGE IN('Y', 'N')),
  CONSTRAINT PK_EID PRIMARY KEY(EID),
  CONSTRAINT UN_ENO UNIQUE(ENO),
  CONSTRAINT UN_EMAIL UNIQUE(EMAIL),
  CONSTRAINT FK_JID FOREIGN KEY(JID) REFERENCES JOB(JOB_CODE) ON DELETE SET NULL,
  CONSTRAINT FK_MID FOREIGN KEY(MID) REFERENCES CONST_EMP ON DELETE SET NULL,
  CONSTRAINT FK_DID FOREIGN KEY(DID) REFERENCES DEPARTMENT ON DELETE CASCADE
);

๐Ÿ‘‰ ์ œ์•ฝ์กฐ๊ฑด ์ˆ˜์ •

[1] ์ œ์•ฝ์กฐ๊ฑด๋ช… ๋ณ€๊ฒฝ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… RENAME CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… TO ์ƒˆ๋กœ์šด์ œ์•ฝ์กฐ๊ฑด๋ช…;

ALTER TABLE DEPT_COPY3
RENAME CONSTRAINT PK_DEPT_CODE3 TO PK_DCODE; 
>>> ์ œ์•ฝ์กฐ๊ฑด๋ช… PK_DEPT_CODE3์ด PK_DCODE๋กœ ๋ณ€๊ฒฝ๋จ

๐Ÿ‘‰ ์ œ์•ฝ์กฐ๊ฑด ์‚ญ์ œ

[1] ์ œ์•ฝ ์กฐ๊ฑด 1๊ฐœ ์‚ญ์ œ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…;

ALTER TABLE CONST_EMP
DROP CONSTRAINT CK_MARRIAGE;

[2] ์ œ์•ฝ ์กฐ๊ฑด ํ•œ๊บผ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ ์‚ญ์ œ

ALTER TABLE CONST_EMP
DROP CONSTRAINT FK_JID
DROP CONSTRAINT FK_MID
DROP CONSTRAINT FK_DID;

[3] NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์€ ์‚ญ์ œ ์‹œ MODIFY ์ด์šฉ

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY (์ปฌ๋Ÿผ๋ช… NULL, ์ปฌ๋Ÿผ๋ช… NULL);

ALTER TABLE CONST_EMP
MODIFY (ENAME NULL, ENO NULL);

profile
Tiny little habits make me

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