ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/DataBase

[SQL] ์ œ์•ฝ ์กฐ๊ฑด

NaNaRin๐Ÿ™ƒ 2021. 3. 16. 14:44

1. ์ œ์•ฝ ์กฐ๊ฑด

- ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์นผ๋Ÿผ์— ์ง€์ •

- ์ œ์•ฝ ์กฐ๊ฑด์„ ์ง€์ •ํ•œ ์นผ๋Ÿผ์—๋Š” ์ œ์•ฝ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์ด ๋ถˆ๊ฐ€๋Šฅ

- ์ œ์•ฝ ์กฐ๊ฑด ์ง€์ • ๋ฐฉ์‹์— ๋”ฐ๋ผ ๊ธฐ์กด ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ •์ด๋‚˜ ์‚ญ์ œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๋˜ํ•œ ์˜ํ–ฅ๋ฐ›์Œ

- ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์„ค๊ณ„ ์‹œ์ , ์ฆ‰ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์ฃผ๋กœ ์ง€์ •

- ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ›„์—๋„ ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์‚ญ์ œ ๊ฐ€๋Šฅ

- ๋ฐ์ดํ„ฐ ์ •์˜์–ด DDL ์—์„œ ํ™œ์šฉ

 

2. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ Data Intergrity

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค๋Š” ์˜๋ฏธ

- ํ•ญ์ƒ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋ณธ ๊ทœ์น™์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ

- ๋ฌด๊ฒฐ์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•œ ์•ˆ์ •์žฅ์น˜๋กœ์„œ ์ œ์•ฝ์กฐ๊ฑด์ด ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•จ

- ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ ๋ชจ๋“  ๊ณผ์ •์—์„œ ์ง€์ผœ์•ผ ํ•จ

  - ์˜์—ญ(๋„๋ฉ”์ธ) ๋ฌด๊ฒฐ์„ฑ Domain Intergrity : ์นผ๋Ÿผ์— ์ €์žฅ๋˜๋Š” ๊ฐ’์˜ ์ ์ • ์—ฌ๋ถ€๋ฅผ ํ™•์ธ. ์ž๋ฃŒํ˜•, ์ ์ ˆํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ, NULL ์—ฌ๋ถ€๊ฐ™์€ ์ •ํ•ด ๋†“์€ ๋ฒ”์œ„๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ์ž„์„ ๊ทœ์ •

  - ๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ Entity Intergrity : ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ NULL์ด ๋  ์ˆ˜๋„, ์ค‘๋ณต๋  ์ˆ˜๋„ ์—†์Œ์„ ๊ทœ์ •

  - ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ Referencial Intergrity : ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค ๊ฐ’์€ ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋กœ์„œ ์กด์žฌํ•ด์•ผ ํ•˜๋ฉฐ NULL์ด ๊ฐ€๋Šฅ

 

3. ์ œ์•ฝ ์กฐ๊ฑด์˜ ์ข…๋ฅ˜

- NOT NULL : ์ง€์ •ํ•œ ์นผ๋Ÿผ์— NULL์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ. NULL์„ ์ œ์™ธํ•œ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์€ ํ—ˆ์šฉ๋จ

- UNIQUE : ์ง€์ •๋œ ์นผ๋Ÿผ์ด ์œ ์ผํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•จ. ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ. ๋‹จ, NULL๊ฐ’์€ ์ค‘๋ณต์—์„œ ์ œ์™ธ๋จ

- PRIMARY KEY : ์ง€์ •๋œ ์นผ๋Ÿผ์ด ์œ ์ผํ•œ ๊ฐ’์ด๋ฉด์„œ NULL์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ. ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜๋งŒ ์ง€์ • ๊ฐ€๋Šฅ

- FOREIGN KEY : ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ์„ ์ฐธ์กฐํ•˜์—ฌ ์กด์žฌํ•˜๋Š” ๊ฐ’๋งŒ ์ž…๋ ฅ ๊ฐ€๋Šฅ

- CHECK : ์„ค์ •ํ•œ ์กฐ๊ฑด์‹์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ž…๋ ฅ ๊ฐ€๋Šฅ

 

3-1. NOT NULL

- ํŠน์ • ์นผ๋Ÿผ์— ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ์—ฌ๋ถ€์™€๋Š” ์ƒ๊ด€์—†์ด NULL์˜ ์ €์žฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ œ์•ฝ ์กฐ๊ฑด

- ์นผ๋Ÿผ ์ด๋ฆ„๊ณผ ์ž๋ฃŒํ˜• ๋’ค์— NOT NULL ํ‚ค์›Œ๋“œ๋ฅผ ๋ช…์‹œํ•˜์—ฌ ์ง€์ •

-- 1.
CREATE TABLE TABLE_NOTNULL(
	LOGIN_ID	VARCHAR2(20) NOT NULL,
    LOGIN_PWD	VARCHAR2(20) NOT NULL,
    TEL			VARCHAR2(20)
);

  (1) ์ด๋ฆ„์ด TABLE_NOTNULL ์ธ ํ…Œ์ด๋ธ”์˜ ๋‘ ์นผ๋Ÿผ LOGIN_ID์™€ LOGIN_PWD๋ฅผ NOT NULL ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ์ƒ์„ฑ

 

3-2. UNIQUE

- ์นผ๋Ÿผ์— ์ €์žฅํ•  ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด

- NULL์€ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต ๋Œ€์ƒ์—์„œ๋Š” ์ œ์™ธ

-- 1.
CREATE TABLE TABLE_UNQ(
	LOGIN_ID	VARCHAR2(20) UNIQUE,
    LOGIN_PWD	VARCHAR2(20) NOT NULL,
    TEL			VARCHAR2(20)
);

  (1) ์ด๋ฆ„์ด TABLE_UNQ ์ธ ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ LOGIN_ID๋ฅผ UNIQUE ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ์ƒ์„ฑ

 

3-3. PRIMARY KEY

- UNIQUE์™€ NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์˜ ํŠน์„ฑ์„ ๋ชจ๋‘ ๊ฐ€์ง€๋Š” ์ œ์•ฝ ์กฐ๊ฑด

- ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ , NULL๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ

- ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜๋งŒ ์ง€์ • ๊ฐ€๋Šฅ

- ํŠน์ • ์นผ๋Ÿผ์„ PRIMARY KEY๋กœ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น ์นผ๋Ÿผ์—๋Š” ์ž๋™์œผ๋กœ ์ธ๋ฑ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง

- ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์œ ์ผํ•œ ๊ฐ’์„ ๋œปํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ์ ์— ํ™•์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ALTER ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ญ„

-- 1.
CREATE TABLE TABLE_PK(
	LOGIN_ID	VARCHAR2(20) PRIMARY KEY,
    LOGIN_PWD	VARCHAR2(20) NOT NULL,
    TEL			VARCHAR2(20)
);

  (1) ์ด๋ฆ„์ด TABLE_PK ์ธ ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ LOGIN_ID๋ฅผ PRIMARY KEY ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ์ƒ์„ฑ

 

3-4. FOREIGN KEY

- ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด

- ํŠน์ • ํ…Œ์ด๋ธ”(์ฐธ์กฐ ํ…Œ์ด๋ธ”)์—์„œ PRIMARY KEY ๊ณ„์•ฝ ์กฐ๊ฑด์„ ์ง€์ •ํ•œ ์นผ๋Ÿผ์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ FOREIGN KEY ๊ณ„์•ฝ ์กฐ๊ฑด์„ ์ง€์ •ํ•œ ์นผ๋Ÿผ์—์„œ ์ฐธ์กฐํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๋กœ ์ง€์ •

- ์ฐธ์กฐ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์„ ๋ถ€๋ชจ, ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์ž์‹์œผ๋กœ ํ‘œํ˜„

- ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ์ฐธ์กฐํ•  ์นผ๋Ÿผ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ํ•ด๋‹น ์นผ๋Ÿผ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

- ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ์ ์— ํ™•์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ALTER ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ญ„

CREATE TABLE ํ…Œ์ด๋ธ” ์ด๋ฆ„ (
	… (๋‹ค๋ฅธ ์—ด ์ •์˜),
    [์นผ๋Ÿผ ์ด๋ฆ„] [์นผ๋Ÿผ ์ž๋ฃŒํ˜•] CONSTRAINT [์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„] REFERENCES ์ฐธ์กฐ ํ…Œ์ด๋ธ”(์ฐธ์กฐํ•  ์นผ๋Ÿผ)
);

CREATE TABLE ํ…Œ์ด๋ธ” ์ด๋ฆ„ (
	… (๋‹ค๋ฅธ ์—ด ์ •์˜),
    [์นผ๋Ÿผ ์ด๋ฆ„] [์นผ๋Ÿผ ์ž๋ฃŒํ˜•] REFERENCES ์ฐธ์กฐ ํ…Œ์ด๋ธ”(์ฐธ์กฐํ•  ์นผ๋Ÿผ)
);

CREATE TABLE ํ…Œ์ด๋ธ” ์ด๋ฆ„ (
	… (๋‹ค๋ฅธ ์—ด ์ •์˜),
    CONSTRAINT [์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„] FOREIGN KEY(์นผ๋Ÿผ ์ด๋ฆ„) REFERENCES ์ฐธ์กฐ ํ…Œ์ด๋ธ”(์ฐธ์กฐํ•  ์นผ๋Ÿผ)
);

-- 1.
CREATE TABLE EMP_FK(
	…,
	DEPTNO NUMBER(2) CONSTRAINT EMPFK_DEPTNO_FK REFERENCES DEPT_FK (DEPTNO)
);

  (1) EMP_FK ํ…Œ์ด๋ธ”์˜ DEPTNO ์นผ๋Ÿผ์€ DEPT_FK ํ…Œ์ด๋ธ”์˜ DEPTNO ์นผ๋Ÿผ์„ ์ฐธ์กฐํ•˜๋Š” ์ด๋ฆ„ EMPFK_DEPTNO_FK์˜ ์™ธ๋ž˜ํ‚ค

 

+ ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•

1. ํ˜„์žฌ ์‚ญ์ œํ•˜๋ ค๋Š” ์นผ๋Ÿผ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์‚ญ์ œํ•œ๋‹ค

  ex) EMP_FK ํ…Œ์ด๋ธ”์˜ DEPTNO๊ฐ€ 10์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์‚ญ์ œํ•œ ํ›„ DEPT_FK์˜ DEPTNO=10 ์„ ์‚ญ์ œ

2. ํ˜„์žฌ ์‚ญ์ œํ•˜๋ ค๋Š” ์นผ๋Ÿผ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค

  ex) EMP_FK ํ…Œ์ด๋ธ”์˜ DEPTNO๊ฐ€ 10์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ์ˆซ์ž ํ˜น์€ NULL๋กœ ์ˆ˜์ •ํ•œ ํ›„ DEPT_FK์˜ DEPTNO=10 ์„ ์‚ญ์ œ

3. ํ˜„์žฌ ์‚ญ์ œํ•˜๋ ค๋Š” ์นผ๋Ÿผ์„ ์ฐธ์กฐํ•˜๋Š” ์ž์‹ ํ…Œ์ด๋ธ”์˜ FOREIGN KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ํ•ด์ œํ•œ๋‹ค

  ex) DEPT_FK ํ…Œ์ด๋ธ”์˜ ์ž์‹ ํ…Œ์ด๋ธ” EMP_FK ํ…Œ์ด๋ธ”์˜ DEPTNO ์นผ๋Ÿผ์˜ FOREIGN KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ํ•ด์ œ

- ์œ„ ๋ฐฉ๋ฒ•๋“ค์ด ๊นŒ๋‹ค๋กญ๊ณ  ๋ฒˆ๊ฑฐ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ์ œ์•ฝ ์กฐ๊ฑด์„ ์ฒ˜์Œ ์ง€์ •ํ•  ๋•Œ ์ถ”๊ฐ€ ์˜ต์…˜์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•จ

-- 1.
CONSTRAINT [์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„] REFERENCES ์ฐธ์กฐ ํ…Œ์ด๋ธ”(์ฐธ์กฐํ•  ์นผ๋Ÿผ) ON DELETE CASCADE

-- 2. 
CONSTRAINT [์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„] REFERENCES ์ฐธ์กฐ ํ…Œ์ด๋ธ”(์ฐธ์กฐํ•  ์นผ๋Ÿผ) ON DELETE SET NULL

  (1) ์นผ๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ญ์ œ -> 1๋ฒˆ ๋ฐฉ๋ฒ•

  (2) ์นผ๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ NULL๋กœ ์ˆ˜์ • -> 2๋ฒˆ ๋ฐฉ๋ฒ•

 

3-5. CHECK

- ์นผ๋Ÿผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ ๋˜๋Š” ํŒจํ„ด์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด

- ๋‹จ์ˆœ ์—ฐ์‚ฐ ๋ฟ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ํ™œ์šฉ๋„ ๊ฐ€๋Šฅ

-- 1.
CREATE TABLE TABLE_CHECK(
	LOGIN_ID	VARCHAR2(20) CONSTRAINT TBLCK_LGNID_PK PRIMARY KEY,
    LOGIN_PWD	VARCHAR2(20) CONSTRAINT TBLCK_LGNPW_CK CHECK (LENGTH(LOGIN_PWD) > 3),
    TEL			VARCHAR2(20)
);

  (1) (LENGTH(LOGIN_PWD) > 3) : LOGIN_PWD์˜ ๊ธธ์ด๊ฐ€ 3 ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ

 

4. ์ œ์•ฝ ์กฐ๊ฑด ํ™•์ธ

- ์ง€์ •ํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ํ™•์ธํ•˜๋ ค๋ฉด USER_CONSTRAINTS ๋ฐ์ดํ„ฐ ์‚ฌ์ „์„ ํ™œ์šฉ

SELECT OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
  FROM USER_CONSTRAINTS;
์นผ๋Ÿผ ์ด๋ฆ„  ์„ค๋ช…
OWNER  ์ œ์•ฝ ์กฐ๊ฑด ์†Œ์œ  ๊ณ„์ •
CONSTRAINT_NAME  ์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„
CONSTRAINT_TYPE  ์ œ์•ฝ ์กฐ๊ฑด ์ข…๋ฅ˜
 C : CHECK, NOT NULL
 U : UNIQUE
 P : PRIMARY KEY
 R : FOREIGN KEY
TABLE_NAME  ์ œ์•ฝ ์กฐ๊ฑด์„ ์ง€์ •ํ•œ ํ…Œ์ด๋ธ” ์ด๋ฆ„

 

5. ์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„ ์ง€์ •

- ์ด๋ฆ„์„ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š์œผ๋ฉด ์˜ค๋ผํด์ด ์ž๋™์œผ๋กœ ์ด๋ฆ„์„ ์ง€์ •

-- 1. ์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„ ์ง€์ • : ์ธ๋ผ์ธ inline / ์—ด ๋ ˆ๋ฒจ column-level ์ œ์•ฝ ์กฐ๊ฑด ์ •์˜
CREATE TABLE TABLE_CST(
	LOGIN_ID	VARCHAR2(20) PRIMARY KEY,
    LOGIN_PWD	VARCHAR2(20) CONSTRAINT TBLCST2_LGNPW_NN NOT NULL,
    NNAME		VARCHAR2(10) CONSTRAINT TBLCST2_NM_UNQ UNIQUE,
    TEL			VARCHAR2(20)
);

-- 2. ์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„ ์ง€์ • : ์•„์›ƒ์˜ค๋ธŒ๋ผ์ธ out-of-line / ์—ด ๋ ˆ๋ฒจ table-level ์ œ์•ฝ ์กฐ๊ฑด ์ •์˜
CREATE TABLE TABLE_CST(
	LOGIN_ID	VARCHAR2(20),
    LOGIN_PWD	VARCHAR2(20),
    NNAME		VARCHAR2(10),
    TEL			VARCHAR2(20),
    PRIMARY KEY (LOGIN_ID),
    CONSTRAINT TBLCST2_NM_UNQ UNIQUE (NNAME)
);

  (1) ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์ œ์•ฝ์กฐ๊ฑด๊ณผ ์ œ์•ฝ์กฐ๊ฑด์˜ ์ด๋ฆ„์„ ์„ค์ •

  (2) ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์ œ์•ฝ์กฐ๊ฑด๊ณผ ์ œ์•ฝ์กฐ๊ฑด์˜ ์ด๋ฆ„์„ ์„ค์ •. NOT NULL ์ œ์•ฝ์กฐ๊ฑด์€ ๋ถˆ๊ฐ€๋Šฅ

 

6. ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€

- ALTER ๋ช…๋ น์–ด์™€ MODIFY ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ

- ํ•ด๋‹น ์นผ๋Ÿผ์— ์ œ์•ฝ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€๋Š” ์‹คํ–‰๋˜์ง€ ๋ชปํ•จ

-- 1. ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€
ALTER TABLE TABLE_CST
MODIFY(TEL NOT NULL);

-- 2. ์ œ์•ฝ ์กฐ๊ฑด์— ์ด๋ฆ„ ์ง€์ •ํ•ด์„œ ์ถ”๊ฐ€
ALTER TABLE TABLE_CST
MODIFY(TEL CONSTRAINT TBLCST_TEL_NN NOT NULL);

-- 3. ์ œ์•ฝ ์กฐ๊ฑด ์ด๋ฆ„ ๋ณ€๊ฒฝ
ALTER TABLE TABLE_CST
RENAME CONSTRAINT TBLCST_TEL_NN TO TBLCST2_TEL_NN;

  (1) TABLE_CST ํ…Œ์ด๋ธ”์˜ TEL ์นผ๋Ÿผ์— NOT NULL ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€. ์ด์ „์— TEL ์นผ๋Ÿผ์— NULL๊ฐ’์ด ์กด์žฌํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. NULL๊ฐ’์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ๋งŒ ์˜ค๋ฅ˜ ์—†์ด ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅ

  (2) ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์ด๋ฆ„์„ ์ง€์ •

  (3) TABLE_CST ํ…Œ์ด๋ธ”์˜ TEL ์นผ๋Ÿผ์— ์ถ”๊ฐ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด TBLCST_TEL_NN์˜ ์ด๋ฆ„์„ TBLCST2_TEL_NN๋กœ ๋ณ€๊ฒฝ

 

7. ์ œ์•ฝ ์กฐ๊ฑด ์‚ญ์ œ

- ALTER ๋ช…๋ น์–ด์— DROP CONSTRAINT ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ

-- 1.
ALTER TABLE TABLE_CST
DROP CONSTRAINT TBLCST2_TEL_NN;

  (1) TABLE_CST ํ…Œ์ด๋ธ”์˜ TEL ์นผ๋Ÿผ์— ์ถ”๊ฐ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด TBLCST2_TEL_NN์„ ์‚ญ์ œ

 

8. DEFAULT ํ‚ค์›Œ๋“œ

- ์ œ์•ฝ ์กฐ๊ฑด๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ ํŠน์ • ์นผ๋Ÿผ์— ์ €์žฅํ•  ๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ

- ๊ธฐ๋ณธ๊ฐ’์ด ์ง€์ •๋œ ์นผ๋Ÿผ์€ ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด NULL์ด ์•„๋‹Œ ๊ธฐ๋ณธ๊ฐ’์ด ์ €์žฅ๋จ (์•”์‹œ์  NULL ์ž…๋ ฅ)

CREATE TABLE TABLE_DEFAULT(
	LOGIN_ID	VARCHAR2(20) CONSTRAINT TBLDF_LGNID_PK PRIMARY KEY,
    LOGIN_PWD	VARCHAR2(20) DEFAULT '1234',
    TEL			VARCHAR2(20)
);

-- 1.
INSERT INTO TABLE_DEFAULT (LOGIN_ID, TEL) VALUES ('TEST_ID', '010-1234-5678');

  (1) LOGIN_PWD๋ฅผ ์ƒ๋žตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๋‹น ์นผ๋Ÿผ์— ์ง€์ •๋œ ๊ธฐ๋ณธ๊ฐ’ '1234'๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค