MapleStory Finger Point Cute Line Smiley Blinking Hello Kitty Angel MapleStory Finger Point

๐Ÿ’Ž DataBase/๐Ÿ’Ž SQL-PL,SQL

หšโ‚Šโœฉโ€งโ‚Š [SQL] CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด หšโ‚Šโœฉโ€งโ‚Š

HYEJU01 2024. 6. 20. 02:41

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

ํ…Œ์ด๋ธ”์— ์˜ฌ๋ฐ”๋ฅธ ๋ฐ์ดํ„ฐ๋งŒ ์ž…๋ ฅ๋ฐ›๊ณ  ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋Š” ๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๋„๋ก ์ปฌ๋Ÿผ๋งˆ๋‹ค ์ •ํ•˜๋Š” ๊ทœ์น™

์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฑฐ๋Š” ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ์ด ๋†’์•„์ง„๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ, ๋ฌด๊ฒฐ์„ฑ, ์‹ ๋ขฐ์„ฑ์ด ๋†’์•„์ง

 


[์ œ์•ฝ์กฐ๊ฑด์˜ ์ข…๋ฅ˜]

 

[NOT NULL]

null ๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.

 

[UNIQUE]

์ค‘๋ณต๋œ ๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ๋‹ค.

 

[PRIMARY KEY / ๊ธฐ๋ณธํ‚ค ]

NOT NULL + UNIQUE ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค. ๋ฐ์ดํ„ฐ๋“ค๋ผ๋ฆฌ์˜ ์œ ์ผ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ปฌ๋Ÿผ์— ์„ค์ •ํ•œ๋‹ค. (ํ…Œ์ด๋ธ” ๋‹น 1๊ฐœ๋งŒ ์„ค์ •)


[FOREIGEN KEY / ์™ธ๋ž˜ํ‚ค]

๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์„ ์ฐธ์กฐํ•ด์„œ ๊ฒ€์‚ฌํ•œ๋‹ค.

* FOREIGN KEY ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์„œ๋กœ ์ฐธ์กฐํ•˜๋„๋ก ์„ค์ •๋œ๋‹ค.

 

* ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์ด์œ  !

์ž์‹ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ ๋˜๊ธฐ ์ „, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด ๋ถ€๋ชจํ…Œ์ด๋ธ”์— ์žˆ๋Š”์ง€ ๋จผ์ € ์กฐ์‚ฌํ•˜๊ณ , ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์ž…๋ ฅ ํ—ˆ๊ฐ€ / ์ฆ‰, ์ž์‹ํ…Œ์ด๋ธ”, ๋ถ€๋ชจํ…Œ์ด๋ธ”์„ ๋ณ€๊ฒฝ-์‚ญ์ œ ์‹œ ๋ฐ˜๋Œ€ ํ…Œ์ด๋ธ”์„ ์ „๋ถ€ ์ฝ์–ด์„œ ํ™•์ธํ•ด์•ผํ•˜๋Š” ๋น„ํšจ์œจ์  ์ƒํ™ฉ์ด ์ƒ๊ธด๋‹ค.

์ด ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋ฉด ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค.

 

* ๋ถ€๋ชจ ํ…Œ์ด๋ธ” :  ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ชฝ -> ์ฐธ์กฐํ‚ค 

* ์ž์‹ ํ…Œ์ด๋ธ” : ์ •๋ณด๋ฅผ ๋ฐ›๋Š” ์ชฝ -> ์™ธ๋ž˜ํ‚ค


[CHECK]

์„ค์ •๋œ ๊ฐ’๋งŒ ์ž…๋ ฅ์„ ํ—ˆ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ฑฐ๋ถ€๋œ๋‹ค.

 

 

* UNIQUE , PK ๋Š” ์˜ค๋ผํด์ด ์ž๋™์œผ๋กœ UNIQUE INDEX ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค. (์ธ๋ฑ์Šค ์ƒ์„ฑ์œผ๋กœ ์ธํ•œ ์‹œ๊ฐ„, ๋ถ€ํ•˜๊ฐ€ ์‹ฌํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ !)

 


[์ œ์•ฝ์กฐ๊ฑด ์‚ฌ์šฉํ•˜๊ธฐ]

* ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ์ง€์ •

CREATE TABLE new_emp1
(no NUMBER(4)
	CONSTRAINT emp1_no_pk PRIMARY KEY,
 name VARCHAR2(20)
 	CONSTRAINT emp1_nam_nn NOT NULL,
jumin VARCHAR(13)
	CONSTRAINT emp1_jumin_nn NOT NULL
    CONSTRAINT emp1_jumin_uk UNIQUE,
loc_code NUMBER(1)
	CONSTRAINT emp1_area_ck CHECK (loc_code < 5),
deptno VARCHAR2(6)
	CONSTRAINT emp1_deptno_fk REFERENCES dept2(dcode)
);

 

 

* ์ œ์•ฝ ์กฐ๊ฑด์˜ ์ด๋ฆ„์„ ์ง์ ‘ ์ง€์ • & ๋ฏธ์ง€์ •

 

์ œ์•ฝ ์กฐ๊ฑด (๋น„ํ™œ์„ฑํ™”/ํ™œ์„ฑํ™”/์‚ญ์ œ) ๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ œ์•ฝ ์กฐ๊ฑด์˜ ์ด๋ฆ„์„ ์•Œ์•„์•ผํ•˜๋ฏ€๋กœ ์ง์ ‘ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ

์ง์ ‘ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ผํด์ด ์ž๋™์œผ๋กœ ์ด๋ฆ„์„ ๊ฒฐ์ •ํ•œ๋‹ค.

no NUMBER(4) CONSTRAINT emp1_no_pk PRIMARY KEY,
    
no NUMBER(4) PRIMARY KEY

 

 

 

* ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ›„ ์ถ”๊ฐ€

ALTER TABLE new_emp2
ADD CONSTRAINT emp2_name_uk UNIQUE(name);
-- name ์ปฌ๋Ÿผ์— ์œ ๋‹ˆํฌ ํ‚ค ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€

 

 


[์ œ์•ฝ์กฐ๊ฑด ๊ด€๋ฆฌํ•˜๊ธฐ]

์ œ์•ฝ ์กฐ๊ฑด๋“ค์€ ์ผ์‹œ์ ์œผ๋กœ DISABLE / ENABLE ๊ฐ€๋Šฅํ•˜๋‹ค.

ex)  ์ด๋ฏธ ๊ฒ€์ฆ๋œ  ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ€์ ธ์™€์„œ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ

 

[DISABLE ํ•˜๊ธฐ]

 

[ENABLE ํ•˜๊ธฐ]

 

[์ œ์•ฝ ์กฐ๊ฑด ์กฐํšŒํ•˜๊ธฐ]

ํ…Œ์ด๋ธ”์ด ์ œ์•ฝ์กฐ๊ฑด์€ , ๋”•์…”๋„ˆ๋ฆฌ์— ์ €์žฅ๋˜์–ด์žˆ๋‹ค.

SELECT owner, constraint_name, constraint_type, status
FROM user_constraints
WHERE table_name="NEW_EMP2"; --ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋Œ€๋ฌธ์ž

 

[์ œ์•ฝ ์กฐ๊ฑด ์‚ญ์ œํ•˜๊ธฐ]

ALTER TABLE new_emp2
DROP CONSTRAINT emp2_name_fk;