์ ์ฝ์กฐ๊ฑด Constraints ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
์ ์ฝ์กฐ๊ฑด์๋ NOT NULL, UNIQUE, Primary Key(๊ธฐ๋ณธํค), Foreign Key(์ธ๋ํค), CHECK ๋ฑ์ด ์๋ค.
1. NOT NULL
์ปฌ๋ผ๋ช ๋ฐ์ดํฐํ์ NOT NULL
์ปฌ๋ผ์ ์ ์ํ ๋ NOT NULL ์ ์ฝ์กฐ๊ฑด์ ๋ช ์ํ๋ฉด ํด๋น ์ปฌ๋ผ์๋ ๋ฐ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํด์ผ ํ๋ค.
์ ์์ ๋ฅผ ๋ณด๋ฉด NOT NULL ์ปฌ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ง ์์ ๋ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ํ์ธํ ์ ์๋ค.
-- ํ
์ด๋ธ ์์ฑ
CREATE TABLE EX2_6(
COL_NULL VARCHAR2(10),
COL_NOT_NUlL VARCHAR2(10) NOT NULL
);
INSERT INTO ex2_6 VALUES ('AA', ''); -- ์๋ฌ ๋ฐ์.
INSERT INTO ex2_6 VALUES ('', 'BB'); -- ์๋ฌ ๋ฐ์๋์ง ์์.
2. UNIQUE
์ปฌ๋ผ๋ช ๋ฐ์ดํฐํ์ UNIQUE
UNIQUE ์ ์ฝ์กฐ๊ฑด์ ๋ง ๊ทธ๋๋ก ํด๋น ์ปฌ๋ผ์ ๋ค์ด๊ฐ๋ ๊ฐ์ด ์ ์ผํด์ผ ํ๋ค๋ ์๋ฏธ๋ก, ์ค๋ณต ๊ฐ์ ํ์ฉํ์ง ์๋๋ค.
* NULL์ ๊ฐ์ด ์์์ ์๋ฏธํ๋ฏ๋ก, UNIQUE ๋น๊ต ๋์์์ NULL์ ์ ์ธ๋๋ค.
-- ํ
์ด๋ธ ์์ฑ
CREATE TABLE EX2_7(
COL_UNIQUE_NULL VARCHAR2(10) UNIQUE,
COL_UNIQUE_NNULL VARCHAR2(10) UNIQUE NOT NULL,
COL_UNIQUE VARCHAR2(10),
CONSTRAINTS unique_nm1 UNIQUE(COL_UNIQUE)
);
INSERT INTO ex2_7 VALUES ('AA', 'AA', 'AA');
INSERT INTO ex2_7 VALUES ('AA', 'AA', 'AA'); -- ์๋ฌ ๋ฐ์. ์ค๋ณต์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ
INSERT INTO ex2_7 VALUES ('','BB','BB');
INSERT INTO ex2_7 VALUES ('CC','','CC'); -- ์๋ฌ ๋ฐ์. ๋๋ฒ์งธ ์ปฌ๋ผ์์ NOT NULL ์ ์ฝ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ
3. PRIMARY KEY (๊ธฐ๋ณธํค)
์ปฌ๋ผ๋ช ๋ฐ์ดํฐํ์ PRIMARY KEY
๊ธฐ๋ณธํค๋ UNIQUE์ NOT NULL ์์ฑ์ ๋์์ ๊ฐ์ง ์ ์ฝ์กฐ๊ฑด์ผ๋ก, ํ ์ด๋ธ ๋น 1๊ฐ์ ๊ธฐ๋ณธํค๋ง ์์ฑํ ์ ์๋ค.
ํน์ํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๊ธฐ๋ณธํค๋ ๋ฐ๋์ ์์ฑํ๋ ๊ฒ์ด ์์น์ด๋ค.
-- ํ
์ด๋ธ ์์ฑ
CREATE TABLE EX2_8(
COL1 VARCHAR2(10) PRIMARY KEY,
COL2 VARCHAR2(10)
);
SELECT constraint_name, constraint_type, table_name, search_condition
FROM user_constraints
WHERE table_name = 'EX2_8';
INSERT INTO ex2_8 VALUES ('', 'AA'); -- ์๋ฌ ๋ฐ์. ์ฒซ๋ฒ์งธ ์ปฌ๋ผ์ NULL์ ์ฝ์
ํ ์ ์๊ธฐ ๋๋ฌธ
INSERT INTO ex2_8 VALUES ('AA', 'AA');
4. CHECK
CONSTRAINT ์ฒดํฌ๋ช CHECK(์ฒดํฌ์กฐ๊ฑด)
์ปฌ๋ผ์ ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฒดํฌํด ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ์ ๋ ฅ ๋ฐ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ๋ฑ์ด ๋ธ๋ค.
-- ํ
์ด๋ธ ์์ฑ
CREATE TABLE EX2_9(
num1 NUMBER
CONSTRAINTS check1 CHECK (num1 BETWEEN 1 AND 9),
gender VARCHAR2(10)
CONSTRAINTS check2 CHECK (gender IN ('MALE', 'FEMALE'))
);
INSERT INTO ex2_9 VALUES (10, 'MAN');
-- ์๋ฌ ๋ฐ์.
--์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ 1~9๊น์ง์ ์ซ์๋ง,
--๋ ๋ฒ์งธ ์ปฌ๋ผ์ 'MALE', 'FEMALE' ๋ ๊ฐ๋ง ๋ฃ์ ์ ์๊ธฐ ๋๋ฌธ
INSERT INTO ex2_9 VALUES (5, 'MALE');
INSERT INTO ex2_9 VALUES (3, 'FEMALE');
'DBMS > OracleDB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle DB] ๋ฌธ์ ํจ์ LPAD, SUBSTR, REPLACE (0) | 2025.01.07 |
---|