๋ฐ์ดํฐ ์ ์ ์ธ์ด(Data Definition Language) ๐ถ
0. DDL
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ, ๋ฐ์ดํฐ ํ์, ์ ๊ทผ ๋ฐฉ์ ๋ฑ DB๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋ ์์ ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ธ์ด
์ข ๋ฅ : CREATE, ALTER, DROP, RENAME, TRUNCATE
๋ฐ์ดํฐ ํ์
ํน์ ์ปฌ๋ผ์ ์ ์ํ ๋ ์ ์ธํ ๋ฐ์ดํฐ ์ ํ์ ๊ทธ ์ปฌ๋ผ์ด ๋ฐ์๋ค์ผ ์ ์๋ ์๋ฃ์ ์ ํ์ ์ ์ํจ
- ๋ฌธ์ํ ๋ฐ์ดํฐ ํ์
- ์ซ์ํ ๋ฐ์ดํฐ ํ์
- ๋ ์งํ ๋ฐ์ดํฐ ํ์
- ๋์ฉ๋ ๋ฐ์ดํฐ ํ์
- LONG/RAW ๋ฐ์ดํฐ ํ์
- ROWID ๋ฐ์ดํฐ ํ์
VARCHAR2 : 4000
CLOB : ๋์ฉ๋์ ํ ์คํธ
NUMBER: ์ต๋ ์ ํจ์๋ฆฌ 30
DATE : ํฌ๊ธฐ๋ฅผ ์ฐ์ง ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
1. CREATE
1. ํ ์ด๋ธ ์์ฑ
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ๋ช
ํ์
[(ํฌ๊ธฐ)] [์ ์ฝ์กฐ๊ฑด],
์ปฌ๋ผ๋ช
ํ์
[(ํฌ๊ธฐ)] [์ ์ฝ์กฐ๊ฑด]
[, CONSTARAINT ์ ์ฝ์กฐ๊ฑด๋ช
PRIMARY KEY(์ปฌ๋ผ)]
);
2. ํ ์ด๋ธ ๋ชฉ๋ก ํ์ธ
SELECT * FROM tabs; -- ์ค๋ผํด์ ๋๋ฌธ์๋ก ์ ์ฅ์ด ๋จ
3. ์ปฌ๋ผ ๋ฐ ์ปฌ๋ผ์ ํ์ ํ์ธ
DESC test;
SELECT * FROM col;
SELECT * FROM col WHERE tname = 'TEST';
SELECT * FROM cols;
SELECT * FROM cols WHERE table_name = 'TEST';
4. ๊ฐ์ ์ปฌ๋ผ(virtual column)
๋์คํฌ์ ์ ์ฅ๋์ง ์๋ ์์๋ค์ ์ ์ฅ
SYSDATE ๋ฑ ๋์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํจ์๋ ์ฌ์ฉโ
๊ฐ์ ์ปฌ๋ผ์ ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์์ โ
ํ์
column [datatype] [GENERATED ALWAYS] AS (column_expression)
[VIRTUAL] [ inline_constraint [inline_constraint]... ]
์์
tot NUMBER(3) GENERATED ALWAYS AS(kor+eng+mat) VIRTUAL
ave NUMBER(3) GENERATED ALWAYS AS((kor+eng+mat)/3)VIRTUAL
5. subquery๋ฅผ ์ด์ฉํ ํ
์ด๋ธ ์์ฑ
์กด์ฌํ๋ ํ
์ด๋ธ์ ์ด์ฉํ์ฌ ํ
์ด๋ธ ์์ฑํ์ฌ ํ
์ด๋ธ ๊ตฌ์กฐ ๋ฐ ๊ฐ ๋ณต์ฌ
NOT NULL์ ์ ์ธํ ๋ค๋ฅธ ์ ์ฝ ์กฐ๊ฑด์ ๋ณต์ฌโ
๊ธฐ๋ณธํ์
CREATE TABLE ํ
์ด๋ธ๋ช
[(์ปฌ๋ผ๋ช
, ์ปฌ๋ผ๋ช
,...)] AS subquery;
2. ALTER
1. ALTER TABLE ~ ADD
๊ธฐ์กด์ ํ
์ด๋ธ์ ์๋ก์ด ์ปฌ๋ผ์ ์ถ๊ฐ
์๋ก ์ถ๊ฐ๋๋ ์ปฌ๋ผ์ ํ ์ด๋ธ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐ
ํ์
ALTER TABLE ํ
์ด๋ธ๋ช
ADD (์ปฌ๋ผ๋ช
์๋ฃํ(ํฌ๊ธฐ));
์์
ALTER TABLE test ADD (dept VARCHAR2(30), sal NUMBER(3) NOT NULL);
ALTER TABLE emp4 ADD (
birth DATE GENERATED ALWAYS AS (TO_DATE(SUBSTR(rrn, 1,6), 'RRMMDD')) VIRTUAL
);
์ฃผ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ ํ ์ด๋ธ์ NOT NULL ์์ฑ์ ์ปฌ๋ผ์ ์ถ๊ฐโ
2. ์ปฌ๋ผ ์์ ALTER TABLE ~ MODIFY
ํ์
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY (์ปฌ๋ผ๋ช
์๋ฃํ(ํฌ๊ธฐ));
์์
ALTER TABLE test MODIFY(sal NUMBER(10));
3. ALTER TABLE ~ RENAME COLUMN : ์ปฌ๋ผ์ ์ด๋ฆ ๋ณ๊ฒฝ
ํ์
ALTER TABLE ํ
์ด๋ธ๋ช
RENAME COLUMN ์ปฌ๋ผ๋ช
TO ์๋ก์ด์ปฌ๋ผ๋ช
์์
ALTER TABLE test RENAME COLUMN num TO empNo;
4. ALTER TABLE ~ DROP COLUMN : ์ปฌ๋ผ ์ญ์
๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ฉด ๋ฐ์ดํฐ๋ ์ญ์
ํ์
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
์์
ALTER TABLE test DROP COLUMN dept;
6. ALTER TABLE ~ SET UNUSED
์ปฌ๋ผ์ ๋
ผ๋ฆฌ์ ์ผ๋ก ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ์ ํ. ๋
ผ๋ฆฌ์ ์ผ๋ก ์ญ์
UNUSED์ ์ํด ์ญ์ ๋ ์ปฌ๋ผ ํ์ธโ
ALTER TABLE emp1 SET UNUSED (pay);
UNUSED์ ์ํด ์ญ์ ๋ ์ปฌ๋ผ์ ๊ฐ์๋ ํ์ธ ๊ฐ๋ฅ
SELECT * FROM user_unused_col_tabs;
7. ALTER TABLE ~ DROP UNUSED COLUMNS
unused์ ์ํด ๋
ผ๋ฆฌ์ ์ผ๋ก ์ญ์ ๋ ์ปฌ๋ผ์ ์ค์ ๋ก ์ญ์
ALTER TABLE emp1 DROP UNUSED COLUMNS;
3. DROP
ํ
์ด๋ธ ์ญ์
ํ์
DROP TABLE ํ
์ด๋ธ; -- ํด์งํต์ ์์๋ณด๊ด (๋ณต๊ตฌ ๊ฐ๋ฅ)
DROP TABLE ํ
์ด๋ธ PURGE; -- ํด์งํต์ ์์๋ณด๊ด ํ์ง ์๊ณ ๋ฐ๋ก ์ญ์ (๋ณต๊ตฌ ๋ถ๊ฐ)
DROP TABLE ํ
์ด๋ธ๋ช
CASCADE CONSTRAINTS PURGE;
-- ํ
์ด๋ธ๊ณผ ๊ทธ ํ
์ด๋ธ์ ์ฐธ์กฐํ๋ FOREIGN KEY์ ์ ์ฝ์กฐ๊ฑด์ ๋์์ ์ญ์
4. RENAME
๊ฐ์ฒด ์ด๋ฆ ๋ณ๊ฒฝ
RENAME ์์ด๋ฆ TO ์์ด๋ฆ;
5. RECYCLEBIN
1. ํด์งํต(RECYCLEBIN) ์ ๋ณด ํ์ธ
2. ์ญ์ ๋ ๊ฐ์ฒด(objects)ํ์ธ
SHOW RECYCLEBIN;
SELECT * FROM RECYCLEBIN;
3.ํด์งํต์ ํ
์ด๋ธ ๋ณต์
์๋ ์ด๋ฆ์ผ๋ก ๋ณต์
FLASHBACK TABLE "BIN ์ด๋ฆ" TO BEFORE DROP; --BIN ์ด๋ฆ์ผ๋ก
FLASHBACK TABLE ์ญ์ ์ ์ด๋ฆ
4. ํด์งํต ๋น์ฐ๊ธฐ
PURGE RECYCLEBIN;
5. TRUNCATE
ํ
์ด๋ธ์ ๋ชจ๋ ๋ ์ฝ๋ ์ญ์ , ํ
์ด๋ธ ๊ตฌ์กฐ๋ ๋ชจ๋ ์ญ์ X
์๋ COMMIT ๋๋ฏ๋ก ๋ณต์ ๋ถ๊ฐ
TRUNCATE TABLE ํ
์ด๋ธ๋ช
;
'๐ปProgramming > ๐ฝOracle' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle] ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ(Data Dictionary) (0) | 2022.08.10 |
---|---|
[ORACLE] ๋ฐ์ดํฐ ์กฐ์์ธ์ด(DML) (0) | 2022.08.09 |
[ORACLE] SQL ํจ์ - ๋จ์ผํ ํจ์ (0) | 2022.08.05 |
[Oracle] ๊ธฐ๋ณธ์ ์ธ SQL (0) | 2022.08.04 |
[Oracle] DQL - Select (0) | 2022.08.04 |