๐โโ๏ธ DDL(Data Definition Language)์ด๋,
ํ ์ด๋ธ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ช ๋ น์ด
๐โโ๏ธ ALTER๋,
๊ฐ์ฒด๋ฅผ ์์ ํ๋ ๊ตฌ๋ฌธ
- ์ปฌ๋ผ ์ถ๊ฐ/์์ /์ญ์ , ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ/์์ /์ญ์
- ์ปฌ๋ผ๋ช , ํ ์ด๋ธ๋ช , ์ ์ฝ์กฐ๊ฑด๋ช ๋ณ๊ฒฝ
๐โโ๏ธ DROP์ด๋,
๊ฐ์ฒด๋ฅผ ์ญ์ ํ๋ ๊ตฌ๋ฌธ
ALTER TABLE ํ
์ด๋ธ๋ช
ADD (์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
());
ALTER TABLE DEPT_COPY
ADD (LNAME VARCHAR2(20));
ALTER TABLE DEPT_COPY
ADD (CNAME VARCHAR2(20) DEFAULT 'ํ๊ตญ');
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๊น์ง ์ด์ฉ ์ค์ด๋ฏ๋ก ์คํ ์,
>>> '์ผ๋ถ ๊ฐ์ด ๋๋ฌด ์ปค์ ์ด ๊ธธ์ด๋ฅผ ์ค์ผ ์ ์์' ์ค๋ฅ
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์ ๊ธฐ๋ณธ๊ฐ์ '๋ฏธ๊ตญ'
);
ALTER TABLE ํ
์ด๋ธ๋ช
RENAME COLUMN ์ปฌ๋ผ๋ช
TO ์๋ก์ด์ปฌ๋ผ๋ช
;
ALTER TABLE DEPT_COPY3
RENAME COLUMN DEPT_ID TO DEPT_CODE;
>>> ์ปฌ๋ผ๋ช
DEPT_ID๊ฐ DEPT_CODE๋ก ๋ณ๊ฒฝ๋จ
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
;
ALTER TABLE DEPT_COPY
DROP COLUMN LNAME;
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์ ์ญ์ ์๋ ์, 'ํ
์ด๋ธ์ ๋ชจ๋ ์ด๋ค์ ์ญ์ ํ ์ ์์ต๋๋ค'
CREATE TABLE TB1(
PK NUMBER PRIMARY KEY,
FK NUMBER REFERENCES TB1, >>> ์๊ธฐ์์ ํ
์ด๋ธ์ ์ฐธ์กฐ
>>> ์ปฌ๋ผ๋ช
์ ๋ช
์ํ์ง ์์์ ๋, ๊ทธ ํ
์ด๋ธ์ PK๋ฅผ ์ฐธ์กฐ.
>>> ๋ฐ๋ผ์ PK NUMBER PRIMARY KEY ์ฐธ์กฐ
COL1 NUMBER,
CHECK(PK > 0 AND COL1 > 0)
);
ALTER TABLE TB1
DROP COLUMN PK;
>>> '๋ถ๋ชจ ํค ์ด์ ์ญ์ ํ ์ ์์ต๋๋ค' ์ค๋ฅ
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
CASCADE CONSTRAINTS;
CASCADE CONSTRAINTS
: ์ ์ฝ์กฐ๊ฑด์ ๋ํ ์ข
์์ฑ๋ ํจ๊ป ์ญ์
ALTER TABLE TB1
DROP COLUMN PK CASCADE CONSTRAINTS;
CREATE TABLE ํ
์ด๋ธ๋ช
(์ปฌ๋ผ๋ช
์๋ฃํ(ํฌ๊ธฐ), ์ปฌ๋ผ๋ช
์๋ฃํ(ํฌ๊ธฐ), ...);
CREATE TABLE MEMBER(
MEMBER_ID VARCHAR2(20),
MEMBER_PWD VARCHAR2(20),
MEMBER_NAME VARCHAR2(20)
);
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;
>>> ์์ ๋ ํ
์ด๋ธ๋ช
์ผ๋ก ์กฐํํด์ผํจ
DROP TABLE ํ
์ด๋ธ๋ช
CASCADE CONSTRAINTS;
DROP TABLE DEPT_TEST CASCADE CONSTRAINTS;
>>> CASCADE CONSTRAINTS : ์ ์ฝ์กฐ๊ฑด์ ๋ํ ์ข
์์ฑ๋ ํจ๊ป ์ญ์
SELECT
DT.*
FROM DEPT_TEST DT;
>>> ํ
์ด๋ธ์ด ์ญ์ ๋์ด 'ํ
์ด๋ธ ๋๋ ๋ทฐ๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค' ์ค๋ฅ
ALTER TABLE ํ
์ด๋ธ๋ช
ADD CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
์ ์ฝ์กฐ๊ฑด(์ปฌ๋ผ๋ช
);
ALTER TABLE DEPT_COPY2
ADD CONSTRAINT PK_DET_ID2 PRIMARY KEY(DEPT_ID);
ALTER TABLE DEPT_COPY2
ADD CONSTRAINT UN_DEPT_TITLE2 UNIQUE(DEPT_TITLE);
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ์ปฌ๋ผ๋ช
CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
์ ์ฝ์กฐ๊ฑด;
ALTER TABLE DEPT_COPY2
MODIFY DEPT_TITLE CONSTRAINT NN_DEPT_TITLE2 NOT NULL;
๐ Ref.
* NOT NULL ์ ์ฝ์กฐ๊ฑด์ ๊ฒฝ์ฐ ADD๊ฐ ์๋ MODIFY(์์ ) ์ฌ์ฉ
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
);
ALTER TABLE ํ
์ด๋ธ๋ช
RENAME CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
TO ์๋ก์ด์ ์ฝ์กฐ๊ฑด๋ช
;
ALTER TABLE DEPT_COPY3
RENAME CONSTRAINT PK_DEPT_CODE3 TO PK_DCODE;
>>> ์ ์ฝ์กฐ๊ฑด๋ช
PK_DEPT_CODE3์ด PK_DCODE๋ก ๋ณ๊ฒฝ๋จ
ALTER TABLE ํ
์ด๋ธ๋ช
DROP CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
;
ALTER TABLE CONST_EMP
DROP CONSTRAINT CK_MARRIAGE;
ALTER TABLE CONST_EMP
DROP CONSTRAINT FK_JID
DROP CONSTRAINT FK_MID
DROP CONSTRAINT FK_DID;
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY (์ปฌ๋ผ๋ช
NULL, ์ปฌ๋ผ๋ช
NULL);
ALTER TABLE CONST_EMP
MODIFY (ENAME NULL, ENO NULL);