๋ฐ์ดํ„ฐ๋ถ„์„๊ฐ€ ๊ณผ์ •/SQL

DAY04. SQL Basic DDL (ํ…Œ์ด๋ธ” ์ƒ์„ฑ,๊ตฌ์กฐ ๋ณ€๊ฒฝ,์‚ญ์ œ)

LEE_BOMB 2021. 9. 14. 19:55

- ํ…Œ์ด๋ธ” ์ƒ์„ฑ, ๊ตฌ์กฐ ๋ณ€๊ฒฝ, ์‚ญ์ œโ€‹

- ์ž๋™ ์ปค๋ฐ‹ (=auto commit)

โ€‹

โ€‹โ€‹

โ€‹

Oracle์—์„œ ์ œ๊ณต๋˜๋Š” ๋ฐ์ดํ„ฐํ˜•์˜ ์ข…๋ฅ˜

VARCHAR2(n) ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž ๋ฐ์ดํ„ฐ(1~4000byte), ์ตœ์†Œํฌ๊ธฐ 1byte

CHAR(n) ๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž ๋ฐ์ดํ„ฐ(1~2000byte) , ์ตœ์†Œํฌ๊ธฐ 1byte

INT 4Byte ํฌ๊ธฐ์˜ ์ •์ˆ˜ ๋ฐ์ดํ„ฐ

NUMBER(p,s) ์ „์ฒด p์ž๋ฆฌ ์ค‘ ์†Œ์ˆ˜์  ์ดํ•˜ s์ž๋ฆฌ(p:1~38, s:-84~127)

DATE 7Byte(BC 4712๋…„ 1์›” 1์ผ๋ถ€ํ„ฐ AD 9999๋…„ 12์›” 31์ผ)

RAW(n) n Byte์˜ ์›์‹œ ์ด์ง„ ๋ฐ์ดํ„ฐ(1~2000)

LONG ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž ๋ฐ์ดํ„ฐ(1~2Gbyte)

LONG RAW ๊ฐ€๋ณ€ ๊ธธ์ด ์›์‹œ ์ด์ง„ ๋ฐ์ดํ„ฐ(1~2Gbyte

โ€‹

โ€‹

1) ์˜์‚ฌ์นผ๋Ÿผ(Pseudo Column)

- ์‹ค์ œ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜์ง€ ์•Š์€ ๊ฐ€์งœ ์นผ๋Ÿผ(๊ฐ€์ƒ ๊ณต๊ฐ„์—์„œ ์‚ฌ์šฉ)

- SELECT์™€ WHERE์ ˆ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜์‚ฌ์นผ๋Ÿผ : ROWNUM๊ณผ ROWID

* ROWNUM : ๋ ˆ์ฝ”๋“œ ์กฐํšŒ ์ˆœ๋ฒˆ

* ROWID : ํ…Œ์ด๋ธ” ์ƒ์„ฑ๊ณผ์ •์—์„œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์‹๋ณ„๊ฐ€๋Šฅํ•œ ๊ณ ์œ ๊ฐ’โ€‹

SELECT ROWNUM, empno, ename, ROWID -- ์ž„์˜ ์‹๋ณ„์ž ๊ฐ’ ๋ถ€์—ฌ
FROM emp
WHERE ROWNUM <=10 ; --1๋ฒˆ๋ถ€ํ„ฐ 10๋ฒˆ๊นŒ์ง€ ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ๋ฐ์ดํ„ฐ ํ™•์ธ

โ€‹โ€‹

๋ ˆ์ฝ”๋“œ ์ˆœ๋ฒˆ ์—ญ์ˆœ ๊ฒ€์ƒ‰

SELECT ROWNUM, empno, ename, ROWID
FROM emp
WHERE ROWNUM <=5
ORDER BY ROWNUM DESC;

โ€‹

โ€‹

5๋ฒˆ~10๋ฒˆ์งธ ์ž…์‚ฌ์ž : ํŠน์ • ๋ฒ”์œ„ ์กฐํšŒ๋Š” ๋ถˆ๊ฐ€๋Šฅ

SELECT ROWNUM, empno, ename, ROWID
FROM emp
WHERE ROWNUM >=5 AND ROWNUM <=10;

โ€‹

ํŠน์ • ๋ฒ”์œ„ : subquery + ๋ณ„์นญ ์ด์šฉ

SELECT rnum, empno, ename, sal
FROM (SELECT emp.*, ROWNUM rnum FROM emp) -- ํ…Œ์ด๋ธ” ๋Œ€์ฒด
WHERE rnum >= 5 AND rnum <=10;

sub query ๋ณ„์นญ : main query SELECT, WHERE์ ˆ ์ด์šฉ

emp.* : main query์— emp์˜ ์นผ๋Ÿผ์„ ๋„˜๊ธฐ๋Š” ์—ญํ• 

โ€‹

โ€‹

โ€‹

โ€‹

2. ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

๊ธฐ์กด ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑ

/*

main qeury -- 2์ฐจ ์‹คํ–‰

AS

sub query; -- 1์ฐจ ์‹คํ–‰

*/

CREATE TABLE emp02 -- ์ „์ฒด๋‚ด์šฉ+๊ตฌ์กฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ™๊ณ , ์ด๋ฆ„๋งŒ ๋‹ค๋ฆ„
AS
SELECT * FROM emp;

SELECT * FROM emp02;

โ€‹โ€‹

์ผ๋ถ€๋ถ„์˜ ์นผ๋Ÿผ์œผ๋กœ๋งŒ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

CREATE TABLE emp03
AS
SELECT empno, ename FROM emp;

โ€‹โ€‹

ํŠน์ • ํ–‰์„ ๋Œ€์ƒ์œผ๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

CREATE TABLE emp05
AS
SELECT * FROM emp
WHERE deptno=10;

โ€‹

ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ(์Šคํ‚ค๋งˆ)๋งŒ ๋ณต์‚ฌํ•˜๊ธฐ

CREATE TABLE emp06
AS
SELECT * FROM emp WHERE 1=0; -- 1=0์€ ๊ฑฐ์ง“์ด๋ฏ€๋กœ ๋ฉ”์ธ์ฟผ๋ฆฌ์— ๋ฐ˜์˜๋˜์ง€ ์•Š๊ณ , ๊ตฌ์กฐ๋งŒ ๋ณต์‚ฌ๋จ

โ€‹

[๊ณผ์ œ] DEPT ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•œ ๊ตฌ์กฐ์˜ ๋นˆ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜์‹œ์˜ค. (ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์€ DEPT02)

CREATE TABLE dept02
AS
SELECT*FROM dept WHERE 1=0;

โ€‹

โ€‹

โ€‹

โ€‹

3. ์‹ค์ˆ˜ํ˜• ํ…Œ์ด๋ธ” ์ƒ์„ฑ

CREATE TABLE emp01(
empno number(4),
ename varchar2(20),
sal number(7,2) -- (์ „์ฒด ์ž๋ฆฟ์ˆ˜, ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜)
);

INSERT INTO emp01 VALUES (1001, 'hong', 1234.1);
INSERT INTO emp01 VALUES (1002, 'lee', 1234.123); -- ์ „์ฒด ์ž๋ฆฌ์ˆ˜๊ฐ€ ๋„˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์†Œ์ˆ˜์  3๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ๋˜์–ด ๋ฐ˜์˜๋œ๋‹ค
INSERT INTO emp01 VALUES (1002, 'kang', 123456.123); -- ์ „์ฒด๊ฐ€ 8์ž๋ฆฌ์ด๋ฏ€๋กœ error ๋ฐœ์ƒ

 

 

 

 

Constraint (ํ…Œ์ด๋ธ” ์ œ์•ฝ์กฐ๊ฑด)

โ€‹1. PRIMARY KEY(PK) ์œ ์ผํ•˜๊ฒŒ ํ…Œ์ด๋ธ”์˜ ๊ฐํ–‰์„ ์‹๋ณ„(NOT NULL๊ณผ UNIQU E์กฐ๊ฑด ๋งŒ์กฑ)

2. FOREIGN KEY(FK) ์—ด๊ณผ ์ฐธ์กฐ๋œ ์—ด ์‚ฌ์ด์˜ ์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„๋ฅผ ์ ์šฉํ•˜๊ณ  ์„ค์ •

3. UNIQUE key(UK) ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์œ ์ผํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ์—ด(NUL L ํ—ˆ์šฉ)

4. NOT NULL(NN) ์—ด์€ NULL๊ฐ’์„ ํฌํ•จํ•  ์ˆ˜ ์—†๋‹ค.

5. CHECK(CK) ์ฐธ์ด์–ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์„ ์ง€์ •ํ•จ(๋Œ€๋ถ€๋ถ„ ์—…๋ฌด ๊ทœ์น™ ์„ค์ •)

โ€‹

โ€‹

โ€‹

โ€‹

์ œ์•ฝ ์กฐ๊ฑด ์ •์˜ ๋ฐฉ๋ฒ•

1) ์นผ๋Ÿผ LEVEL ์ œ์•ฝ ์กฐ๊ฑด(COLUMN LEVEL CONSTRAINT)

์—ด(์นผ๋Ÿผ)๋ณ„๋กœ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ •์˜ํ•œ๋‹ค.

๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด 5๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

NOT NULL์ œ์•ฝ ์กฐ๊ฑด์€ ์นผ๋Ÿผ LEVEL์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

โ€‹

โ€‹

โ€‹

โ€‹

2) ํ…Œ์ด๋ธ” LEVEL ์ œ์•ฝ ์กฐ๊ฑด(TABLE LEVEL CONSTRAINT)

ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ ์ •์˜์™€๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ด์„ ์ฐธ์กฐํ•  ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

NOT NULL์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ œ์•ฝ ์กฐ๊ฑด๋งŒ ์ •์˜

โ€‹

(1) PRIMARY KEY (PK)

column datatype [CONSTRAINT constraint_name] PRIMARY KEY (col1[,col2,..])

ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

ํ•˜๋‚˜์˜ ๊ธฐ๋ณธ ํ‚ค๋งŒ์ด ํ…Œ์ด๋ธ”์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

PRIMARY KEY ์ œ์•ฝ ์กฐ๊ฑด์€ ํ…Œ์ด๋ธ”์—์„œ ๊ฐํ–‰์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์—ด ๋˜๋Š” ์—ด์˜ ์ง‘ํ•ฉ์ด๋‹ค.(UNIQUE์™€ NOT NULL์กฐ๊ฑด์„ ๋งŒ์กฑ)

์ด ์ œ์•ฝ ์กฐ๊ฑด์€ ์—ด ๋˜๋Š” ์—ด์˜ ์ง‘ํ•ฉ์˜ ์œ ์ผ์„ฑ์„ ์š”๊ตฌํ•˜๊ณ  NULL๊ฐ’์„ ํฌํ•จํ•  ์ˆ˜ ์—†๋‹ค.

UNIQUE INDEX๊ฐ€ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค.

โ€‹

1) ๊ธฐ๋ณธํ‚ค (primary key) : ์ž๋ฃŒ ๊ฒ€์ƒ‰์šฉ ์นผ๋Ÿผ

CREATE TABLE test_tab1(
id number(2) PRIMARY KEY, -- ์นผ๋Ÿผ ๋ ˆ๋ฒจ๋กœ ๊ธฐ๋ณธํ‚ค ์„ค์ •
name varchar(10)
);

CREATE TABLE test_tab2(
id number(2),
name varchar(10),
PRIMARY KEY(id) -- ํ…Œ์ด๋ธ” ๋ ˆ๋ฒจ๋กœ ๊ธฐ๋ณธํ‚ค ์„ค์ •
);

โ€‹

โ€‹(2) FOREIGN KEY (FK)

column datatype [CONSTRAINT constraint_name] REFERENCES table_ name (column1[,column2,..] [ON DELETE CASCADE])

์™ธ๋ž˜ํ‚ค(FOREIGN KEY)๋Š” ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ์ •์˜ํ•œ๋‹ค.

MASTER TABLE์˜ PRIMARY KEY,UNIQUE KEY๋กœ ์ •์˜๋œ ์—ด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ด์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜ NULL๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค.

FOREIGN KEY๋Š” ์—ด ๋˜๋Š” ์—ด์˜ ์ง‘ํ•ฉ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋™์ผ ํ…Œ์ด๋ธ” ๋˜๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ON DELETE CASCADE์„ ์‚ฌ์šฉํ•˜์—ฌ DETAIL TABLE์—์„œ ๊ด€๋ จ๋œ ํ–‰์„ ์‚ญ์ œํ•˜ ๊ณ  MASTER TABLE์—์„œ ์‚ญ์ œ๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

โ€‹

์™ธ๋ž˜ํ‚ค ํฌํ•จ๋œ table ์ƒ์„ฑ (=๊ฑฐ๋ž˜ ํ…Œ์ด๋ธ”)

CREATE TABLE emp_tab(
empno number(4) PRIMARY KEY, -- ๊ฑฐ๋ž˜ํ…Œ์ด๋ธ” ์ž์ฒด์˜ ๊ธฐ๋ณธํ‚ค
ename varchar(30),
sal number(7),
deptno number(2) NOT NULL, -- ์™ธ๋ž˜ํ‚ค
FOREIGN KEY(deptno) REFERENCES dept_tab(deptno) -- ์ฐธ์กฐํ•˜๊ณ ์ž ํ•˜๋Š” ํ…Œ์ด๋ธ” ๋ช…์‹œ
);

INSERT INTO emp_tab VALUES (1001, 'ํ™๊ธธ๋™', 2500000, 1);
INSERT INTO emp_tab VALUES (1002, '์œ ๊ด€์ˆœ', 3500000, 2);
INSERT INTO emp_tab VALUES (1003, '๊ฐ•ํ˜ธ๋™', 4500000, 3); -- error : ์ฐธ์กฐ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ์œ„๋ฐฐ
SELECT * FROM emp_tab;

โ€‹

๋ฌธ์ œ) sub query๋ฅผ ์ด์šฉํ•ด์„œ ์‚ฌ๋ฒˆ์ด 1002์ธ ์‚ฌ์›์˜ ๋ถ€์„œ์ •๋ณด ์ถœ๋ ฅ

sub ํ…Œ์ด๋ธ” : emp_tab, main ํ…Œ์ด๋ธ” : dept_tab

SELECT *
FROM dept_tab
WHERE deptno =
(SELECT deptno FROM emp_tab WHERE empno=1002);

โ€‹โ€‹

(3) UNIQUE KEY (UK)

column datatype [CONSTRAINT constraint_name] UNIQUE

UNIQUE Key ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์€ ์—ด ๋˜๋Š” ์—ด ์ง‘ํ•ฉ์˜ ๊ฐ’๋“ค์ด ์œ ์ผํ•ด์•ผ ํ•œ๋‹ค.

์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํ–‰์ด ์กด์žฌํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

PRIMARY KEY์™€ ์œ ์‚ฌํ•˜๋‚˜ NULL์„ ํ—ˆ์šฉํ•œ๋‹ค.

์—ด์ด ํ•˜๋‚˜ ์ด์ƒ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด composite unique key๋ผ ๋ถ€๋ฅธ๋‹ค.

UNIQUE Key์— ๋Œ€ํ•˜์—ฌ UNIQUE INDEX๊ฐ€ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค.โ€‹

CREATE TABLE UNI_TAB1 (
DEPTNO NUMBER(2) CONSTRAINT UNI_TAB_DEPTNO_UK UNIQUE, -- ์นผ๋Ÿผ level : ์ค‘๋ณต ๋ถˆ๊ฐ€
DNAME CHAR(14),
LOC CHAR(13));
INSERT INTO UNI_TAB1 VALUES(1,'AAAA','BBBB');
INSERT INTO UNI_TAB1(dname, loc) VALUES('BBBB','CCCC'); -- ์ค‘๋ณต์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ null(์ƒ๋žต)์€ ํ—ˆ์šฉ
INSERT INTO UNI_TAB1(dname, loc) VALUES('1','BBBB','CCCC'); -- error๋ฐœ์ƒ : ์ค‘๋ณต๋ถˆ๊ฐ€ ์ œ์•ฝ์กฐ๊ฑด๋•Œ๋ฌธ์—
SELECT * FROM uni_tab1;

โ€‹โ€‹

(4) NOT NULL (NN)

column datatype [CONSTRAINT constraint_name] NOT NULL

NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์€ ์—ด์—์„œ NULL์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋„๋ก ๋ณด์ฆํ•œ๋‹ค.

NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์ด ์—†๋Š” ์—ด์€ DEFAULT๋กœ NULL์„ ํ—ˆ์šฉํ•œ๋‹ค.

NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์€ ์นผ๋Ÿผ ์ œ์•ฝ์กฐ๊ฑด์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

โ€‹โ€‹

(5) CHECK (CK)

column datatype [CONSTRAINT constraint_name] CHECK (condition)

ํŠน์ • ์—ด(์นผ๋Ÿผ)์— ๋Œ€ํ•ด์„œ ์กฐ๊ฑด์„ ์ง€์ •ํ•˜์—ฌ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜์ง€๋Š”์ง€๋ฅผ ์ ๊ฒ€ํ•œ๋‹ค.

์กฐ๊ฑด์— ๋งŒ์กฑํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ์ €์žฅ๋  ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ‘œํ˜„์‹์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

– CURRVAL, NEXTVAL, LEVEL, ROWNUM์— ๋Œ€ํ•œ ์ฐธ์กฐ

– SYSDATE, UID, USER, USERENV ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํ˜ธ์ถœ

– ๋‹ค๋ฅธ ํ–‰์— ์žˆ๋Š” ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ์งˆ์˜

– ORACLE SERVER๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์•ฝ์–ด

โ€‹

CREATE TABLE CK_TAB (
DEPTNO NUMBER(2) NOT NULL CHECK (DEPTNO IN (10,20,30,40,50)), -- ์ฒซ ๋ฒˆ์งธ ์ œ์•ฝ์กฐ๊ฑด : NOT NULL, ๋‘ ๋ฒˆ์งธ ์ œ์•ฝ์กฐ๊ฑด CEHCK์ ˆ
DNAME CHAR(14),
LOC CHAR(13));
INSERT INTO CK_TAB VALUES(10,'AAAA','BBBB'); -- ๋ ˆ์ฝ”๋“œ ์‚ฝ์ž…
INSERT INTO CK_TAB VALUES(60,'AAAA','BBBB'); -- CHECK์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐฐ. '60'์„ CEHCK์ ˆ list์— ์ถ”๊ฐ€ํ•˜๋ฉด ์„ฑ๋ฆฝ

 

 

 

 

SQL DDL (๋ฐ์ดํ„ฐ ์ •์˜์–ด) ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ณ€๊ฒฝ

1. ALTER TABLE ๋ช…๋ น๋ฌธ

์นผ๋Ÿผ ์ถ”๊ฐ€, ์‚ญ์ œ, ํƒ€์ž…์ด๋‚˜ ๊ธธ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉ

ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ๊ธฐ์กด์— ์ €์žฅ๋˜์–ด ์žˆ๋˜ ๋ฐ์ดํ„ฐ์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

โ€‹

โ€‹

1) ALTER TABLE ADD

ALTER TABLE table_name ADD (column_name, data_type expr, …)

๊ธฐ์กด ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์นผ๋Ÿผ ์ถ”๊ฐ€

์ƒˆ๋กœ์šด ์นผ๋Ÿผ์€ ํ…Œ์ด๋ธ” ๋งจ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋˜๋ฏ€๋กœ ์ž์‹ ์ด ์›ํ•˜๋Š” ์œ„์น˜ ์— ๋งŒ๋“ค์–ด ๋„ฃ์„ ์ˆ˜ ์—†๋‹ค.

๋˜ํ•œ ์ด๋ฏธ ์ด์ „์— ์ถ”๊ฐ€ํ•ด ๋†“์€ ๋กœ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ทธ ๋กœ์šฐ์—๋„ ์นผ๋Ÿผ ์ด ์ถ”๊ฐ€๋˜์ง€๋งŒ, ์นผ๋Ÿผ ๊ฐ’์€ NULL ๊ฐ’์œผ๋กœ ์ž…๋ ฅ๋œ๋‹ค.

โ€‹

ALTER TABLE emp01
ADD (job varchar(9)); -- ์ด๋ฏธ ์‚ฌ์šฉ์ค‘์ธ ํ…Œ์ด๋ธ”์— ์ƒˆ ์นผ๋Ÿผ job์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๋‹น ์นผ๋Ÿผ์—๋Š” null๊ฐ’์ด ์ฑ„์›Œ์ง„๋‹ค

โ€‹

2) ALTER TABLE MODIFY๋ฌธ

์นผ๋Ÿผ์— ๋Œ€ํ•ด์„œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋‚˜ ํฌ๊ธฐ, ๊ธฐ๋ณธ ๊ฐ’๋“ค์„ ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•˜๋‹ค (์ œ์•ฝ์กฐ๊ฑด์€ ์ˆ˜์ •๋ถˆ๊ฐ€)

โ€‹

์นผ๋Ÿผ์ˆ˜์ •: ์ž๋ฃŒํ˜•, ํฌ๊ธฐ๋ณ€๊ฒฝ

ALTER TABLE table_name MODIFY (column_name, data_type expr, …);
ALTER TABLE emp01
MODIFY(JOB VARCHAR2(30)); -- varvhar(9) -> (30)
DESC emp01;

โ€‹

์นผ๋Ÿผ๋ช… ์ˆ˜์ • : sal -> pay

ALTER TABLE emp01 RENAME COLUMN sal to pay;
SELECT * FROM emp01;

โ€‹

3) ALTER TABLE DROP๋ฌธ

ALTER TABLE table_name DROP COLUMN column_name;

โ€‹

์นผ๋Ÿผ ์‚ญ์ œ :

ALTER TABLE emp01
DROP COLUMN job;

 

โ€‹4) ALTER TABLE RENAME๋ฌธโ€‹

ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ณ€๊ฒฝ :

ALTER TABLE emp01 RENAME TO emp01_copy;

โ€‹* SCOTT์‚ฌ์šฉ์ž์˜ ์ „์ฒด ํ…Œ์ด๋ธ” ๋ชฉ๋ก ๋ณด๊ธฐ

SELECT * FROM tab; --tab์€ ์˜์‚ฌํ…Œ์ด๋ธ”

โ€‹

โ€‹

โ€‹

โ€‹

โ€‹

โ€‹

โ€‹

SQL DDL (๋ฐ์ดํ„ฐ ์ •์˜์–ด) ์ „์ฒด ๋ ˆ์ฝ”๋“œ ์ œ๊ฑฐ

TRUNCATE

๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ(row)๋ฅผ ์ œ๊ฑฐ

TRUNCATE TABLE table_nameโ€‹

SELECT * FROM emp01_copy;
TRUNCATE TABLE emp01_copy;

โ€‹

 

 

 

 

 

SQL DDL (๋ฐ์ดํ„ฐ ์ •์˜์–ด) ์ „์ฒด ํ…Œ์ด๋ธ” ์ œ๊ฑฐ, ๋ฐ์ดํ„ฐ ๋ณต์›

1) ์ „์ฒด ํ…Œ์ด๋ธ” ๋ชฉ๋ก ๋ณด๊ธฐ

SELECT * FROM tab;
SELECT tname FROM tab;

โ€‹

-- ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ

SELECT tname FROM tab WHERE tname = 'EMP'; -- ํ…Œ์ด๋ธ”๋ช… : ๋Œ€๋ฌธ์ž

โ€‹

โ€‹2) ํ…Œ์ด๋ธ” + ์ž„์‹œํŒŒ์ผ ์ œ๊ฑฐโ€‹

DROP TABLE emp01_copy PURGE; -- ๋ณต๊ตฌ ๋ถˆ๊ฐ€๋Šฅ

โ€‹โ€‹

3) ํ…Œ์ด๋ธ” ์ œ๊ฑฐ

CREATE TABLE emp01_copy

AS

SELECT*FROM emp;

DROP TABLE emp01_copy; -- ์ž„์‹œํŒŒ์ผ ์กด์žฌ

โ€‹

โ€‹

โ€‹

4) ์ž„์‹œํŒŒ์ผ ์ œ๊ฑฐ

PURGE RECYCLEBIN;
SELECT*FROM tab;

 

 

 

 

Data Dictionary, View (๋ฐ์ดํ„ฐ ์‚ฌ์ „๊ณผ ๋ทฐ)

๋ฐ์ดํ„ฐ ์‚ฌ์ „ (Data Dictionary) = ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”

์‚ฌ์šฉ์ž๊ฐ€ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์˜ํ•ด ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š” ํ…Œ์ด๋ธ”

์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ์˜ ๋‚ด์šฉ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค. (์กฐํšŒ ๋ถˆ๊ฐ€)

โ€‹

๋ฐ์ดํ„ฐ ์‚ฌ์ „ ๋ทฐ(DATA Dictionary View)

๋ฐ์ดํ„ฐ ์‚ฌ์ „์—์„œ ๋งŒ๋“ค์–ด์ง„ ์ •๋ณด ์กฐํšŒ ๊ธฐ๋Šฅ ์ œ๊ณต

DBA_XXXX : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๋“ฑ์˜ ์ •๋ณด ์กฐํšŒ (DBA๋Š” ๋ชจ๋‘ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ฒฐ๊ตญ ๋””๋น„์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ์ฒด์— ๊ด€ํ•œ ์กฐํšŒ)

ALL_XXXX : ์ž์‹  ๊ณ„์ • ์†Œ์œ  ๋˜๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌ ๋ฐ›์€ ๊ฐ์ฒด ๋“ฑ์— ๊ด€ํ•œ ์ •๋ณด ์กฐํšŒ

USER_XXXX : ์ž์‹ ์˜ ๊ณ„์ •์ด ์†Œ์œ ํ•œ ๊ฐ์ฒด ๋“ฑ์— ๊ด€ํ•œ ์ •๋ณด ์กฐํšŒ

 

 

โ€‹

SHOW USER; -- command line;

โ€‹

1) ํ…Œ์ด๋ฏˆ ๋ชฉ๋ก ์กฐํšŒ : USER_TABLES

SELECT * FROM USER_TABLES;
SELECT TABLE_NAME FROM USER_TABLES;

โ€‹โ€‹

2) ์ž„์‹œํŒŒ์ผ ์กฐํšŒ ๋ทฐ : USER_RECYCLEBIN

DESC dept01;
DROP TABLE dept01; -- ํ…Œ์ด๋ธ” ์‚ญ์ œ
SELECT * FROM USER_RECYCLEBIN; -- ์‚ญ์ œ๋œ ์ž„์‹œํŒŒ์ผ ์กฐํšŒ

OBJECT_NAME : ์ž„์‹œํŒŒ์ผ๋ช…

ORIGINAL_NAME : ์›๋ณธํŒŒ์ผ๋ช…

โ€‹โ€‹

3) ํ…Œ์ด๋ธ” ๋ณต์›โ€‹

FLASHBACK TABLE "์ž„์‹œํŒŒ์ผ๋ช…" TO BEFORE DROP;

FLASHBACK TABLE "BIN$KhiwkkL3Q9+7pzWAUWjg1A==$0" TO BEFORE