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

- ์ž๋™ ์ปค๋ฐ‹ (=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

'๋ฐ์ดํ„ฐ๋ถ„์„๊ฐ€ ๊ณผ์ • > SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

DAY06. SQL Function  (0) 2021.09.16
DAY05. SQL Basic DML (INSERT, UPDATE, DELETE), Sequence  (0) 2021.09.15
DAY03. SQL Basic (Sort, Subquery)  (0) 2021.09.13
DAY02. SQL Basic (Data type, Select)  (0) 2021.09.12
DAY01. SQL Basic (DDL, DML, DCL)  (0) 2021.09.11

+ Recent posts