์ ์ฝ์กฐ๊ฑด
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ์ ํํ๋ ๊ท์น์ธ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด์ ์ ์
๋ฌด๊ฒฐ์ฑ : DB ๋ด์ ์๋ ๋ฐ์ดํฐ์ ์ ํ์ฑ(์ ํจ์ฑ) ์ ์ง
์ ์ฝ์กฐ๊ฑด: ๋ฐ๋์งํ์ง ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ฒ์ ๋ฐฉ์ง
์ ์ฝ ์กฐ๊ฑด ํ์ธ
SELECT * FROM user_constraints;
SELECT * FROM user_constraintss WHERE table_name = 'ํ
์ด๋ธ๋ช
';
ํ์ฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ง๊ณ ์๋ ์ปฌ๋ผ์ ๋ถ์ฌ๋ ์ ์ฝ์กฐ๊ฑด ์ ๋ณด ํ์ธ
์ด๋ค ์ปฌ๋ผ์ ์ ์ฝ์กฐ๊ฑด์ด ๋ถ์ฌ๋์๋์ง ํ์ธ ๊ฐ๋ฅ (์ ์ฝ ์กฐ๊ฑด์ ์ข
๋ฅ๋ ํ์ธ ๋ถ๊ฐ๋ฅ)
๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด(constraint) ์ข ๋ฅ
1. PRIMARY KEY constraint
๊ธฐ๋ณธํค ์ ์ฝ์กฐ๊ฑด์ ํ๋์ ์นผ๋ผ ๋๋ ๋ ๊ฐ ์ด ์์ ์นผ๋ผ์ ์กฐํฉํ์ฌ ์ฌ๋ฌ ํ์ด ๋์ผํ ๊ฐ โ
๊ธฐ๋ณธ ํค๋ ํ๋์ ํ ์ด๋ธ์ ํ๋๋ง ์ง์ ํ ์ ์์ผ๋ฉฐ, null ๊ฐ์ ํ์ฉ โ
๋ชจ๋ ํ ์ด๋ธ์ด ๊ธฐ๋ณธํค๊ฐ ์์
1) ํ ์ด๋ธ ์์ฑ๊ณผ ๋์์ ๊ธฐ๋ณธ ํค ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
[ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] PRIMARY KEY
);
ํ๋์ ์ปฌ๋ผ์๋ง ๊ธฐ๋ณธํค ๋ถ์ฌ ๊ฐ๋ฅ
2) ์ปฌ๋ผ์ ์ ์ํ๊ณ ๋ง์ง๋ง์ ๊ธฐ๋ณธํค ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
[ ์ ์ฝ์กฐ๊ฑด ],
[ CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ ] PRIMARY KEY (์ปฌ๋ผ [,์ปฌ๋ผ])
);
๋๊ฐ ์ด์์ ์ปฌ๋ผ(๋ณตํฉ ํค)์ผ๋ก ๊ธฐ๋ณธํค๋ฅผ ์ง์ ๊ฐ๋ฅ
3) ์กด์ฌํ๋ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค ์ค์
ALTER TABLE ํ
์ด๋ธ๋ช
ADD [ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] PRIMARY KEY (์ปฌ๋ผ [,์ปฌ๋ผ]);
4) ๊ธฐ๋ณธํค ์ ์ฝ ์กฐ๊ฑด ์ญ์
ALTER TABLE ํ
์ด๋ธ๋ช
DROP PRIMARY KEY;
ALTER TABLE ํ
์ด๋ธ๋ช
DROP CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
;
2. UNIQUE constraint
UNIQUE์ ์ฝ์กฐ๊ฑด์ ํ๋์ ์นผ๋ผ ๋๋ ๋ ๊ฐ ์ด ์์ ์นผ๋ผ์ ์กฐํฉํ์ฌ ์ฌ๋ฌ ํ์ด ๋์ผํ ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
UNIQUE ์ ์ฝ ์กฐ๊ฑด์ ํ๋์ ํ
์ด๋ธ์ ๋ ๊ฐ ์ด์ ์ง์ ๊ฐ๋ฅํ๋ฉฐ, null ๊ฐ์ ํ์ฉ ๊ฐ๋ฅ
1) ํ ์ด๋ธ ์์ฑ๊ณผ ๋์์ UNIQUE ์ ์ฝ ์กฐ๊ฑด ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
[ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] UNIQUE
2) ํ ์ด๋ธ ๋ ๋ฒจ ๋ฐฉ์์ UNIQUE ์ ์ฝ ์กฐ๊ฑด ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
[ ์ ์ฝ์กฐ๊ฑด ] ,
[ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] UNIQUE (์ปฌ๋ผ [,์ปฌ๋ผ])
);
3) ์กด์ฌํ๋ ํ ์ด๋ธ์ UNIQUE ์ ์ฝ ์กฐ๊ฑด ์ค์
ALTER TABLE ํ
์ด๋ธ๋ช
ADD [ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] UNIQUE (์ปฌ๋ผ [,์ปฌ๋ผ]);
4) UNIQUE ์ ์ฝ ์กฑ๊ฑด ์ญ์
ALTER TABLE ํ
์ด๋ธ๋ช
DROP UNIQUE (์ปฌ๋ผ [,์ปฌ๋ผ]);
ALTER TABLE ํ
์ด๋ธ๋ช
DROP CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
;
3. NOT NULL constraint
์นผ๋ผ์ null ๊ฐ์ ํ์ฉ โ
1) ํ ์ด๋ธ ์์ฑ์ NOT NULL ์ ์ฝ ์กฐ๊ฑด ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
NOT NULL
);
2) ์กด์ฌํ๋ ํ ์ด๋ธ์ NOT NULL ์ ์ฝ ์กฐ๊ฑด ์ค์
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ์ปฌ๋ผ NOT NULL;
ALTER TABLE ํ
์ด๋ธ๋ช
ADD [ CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ ] CHECK(์ปฌ๋ผ IS NOT NULL);
3) NOT NULL ์ ์ฝ ์กฐ๊ฑด ์ญ์
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ์ปฌ๋ผ NULL;
ALTER TABLE ํ
์ด๋ธ๋ช
DROP CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ;
4. DEFAULT
1) ํ ์ด๋ธ ์์ฑ์ DEFAULT ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
DEFAULT ์์
);
2) DEFAULT ํ์ธ
SELECT column_name, data_type, data_precision, data_length, nullable, data_default
FROM user_tab_columns
WHERE table_name='ํ
์ด๋ธ๋ช
';
3) DEFAULT ์ ๊ฑฐ
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ์ปฌ๋ผ DEFAULT NULL;
5. CHECK constraint
CHECK ์ ์ฝ ์กฐ๊ฑด์ ์ง์ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ๋ง ๊ฐ์ง ์ ์๋ค.
1) ํ ์ด๋ธ ์์ฑ๊ณผ ๋์์ CHECK ์ ์ฝ ์กฐ๊ฑด ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
[ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] CHECK ( ์กฐ๊ฑด )
);
2) ํ ์ด๋ธ ๋ ๋ฒจ ๋ฐฉ์์ CHECK ์ ์ฝ ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
,
[ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] CHECK ( ์กฐ๊ฑด )
);
3) ์กด์ฌํ๋ ํ ์ด๋ธ์ CHECK ์ ์ฝ ์กฐ๊ฑด ์ค์
ALTER TABLE ํ
์ด๋ธ๋ช
ADD [ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] CHECK ( ์กฐ๊ฑด );
4) CHECK ์ ์ฝ ์กฐ๊ฑด ์ญ์
ALTER TABLE ํ
์ด๋ธ๋ช
DROP CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
;
6. FOREIGN KEY constraint (์ธ๋ํค)
์ธ๋ ํค(FOREIGN KEY) ์ ์ฝ ์กฐ๊ฑด์ ํ ํ
์ด๋ธ์ ๊ฐ์ด ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ฐ๊ณผ ์ผ์นํด์ผ ํจ
์ฐธ์กฐํด์ผ ํ๋ ํ ์ด๋ธ์ REFRENCES ํค์๋
1 ) ์ปฌ๋ผ ๋ ๋ฒจ ๋ฐฉ์๊ณผ FOREIGN KEY ์ ์ฝ ์ค์
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ ๋ฐ์ดํฐํ์
[ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
]
REFERENCES ์ฐธ์กฐํ ํ
์ด๋ธ๋ช
(์ปฌ๋ผ)
[ON DELETE { CASCADE | SET NULL } ]
);
2) ํ ์ด๋ธ ๋ ๋ฒจ ๋ฐฉ์์ FOREIGN KEY ์ ์ฝ ์ค์
CREATE TABLE table_name (
์ปฌ๋ผ ๋ฐ์ดํฐํ์
,
[ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] FOREIGN KEY ( ์ปฌ๋ผ [,์ปฌ๋ผ] )
REFERENCES ์ฐธ์กฐํ ํ
์ด๋ธ๋ช
(์ปฌ๋ผ [,์ปฌ๋ผ])
[ON DELETE { CASCADE | SET NULL } ]
);
3) ์กด์ฌํ๋ ํ ์ด๋ธ์ FOREIGN KEY ์ ์ฝ ์กฐ๊ฑด ์ค์
ALTER TABLE ํ
์ด๋ธ๋ช
ADD [ CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
] FOREIGN KEY( ์ปฌ๋ผ [,์ปฌ๋ผ] )
REFERENCES ์ฐธ์กฐํ ํ
์ด๋ธ๋ช
(์ปฌ๋ผ [,์ปฌ๋ผ]);
4) ์ ์ฝ ์กฐ๊ฑด ์ญ์
ALTER TABLE ํ
์ด๋ธ๋ช
DROP CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช
;
'๐ปProgramming > ๐ฝOracle' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle] ์๋ธ์ฟผ๋ฆฌ (0) | 2022.08.11 |
---|---|
[Oracle] ์กฐ์ธ (0) | 2022.08.11 |
[Oracle] ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ(Data Dictionary) (0) | 2022.08.10 |
[ORACLE] ๋ฐ์ดํฐ ์กฐ์์ธ์ด(DML) (0) | 2022.08.09 |
[ORACLE] ๋ฐ์ดํฐ ์ ์์ธ์ด (DDL) (0) | 2022.08.09 |