: 테이블에 오류 DATA가 입력되는 것을 막기 위한 최소한의 규칙
▶ PRIMARY KEY : 각 행을 구분지어주는 역할
→ NOT NULL + UNIQUE
→ INDEX 기본 생성
→ SEQUENCE를 사용하면 쉽게 PRIMARY KEY 생성 가능
▶ FORIEGN KEY : 다른 테이블을 연결 / 참조 / 참고 하는 속성
▶ NOT NULL : 데이터를 반드시 입력
▶ UNIQUE : 다른 행의 데이터와 중복 X (NULL 입력, 중복 가능)
▶ CHECK : 연산을 통해 입력되는 데이터를 검사
CREATE TABLE PRODUCT( PRDT_NO NUMBER(5, 0)
, PRDT_NAME VARCHAR2(90) NOT NULL UNIQUE
, PRDT_PRICE NUMBER(7, 0) CHECK(PRDT_PRICE >= 0)
, PRDT_STOCK NUMBER(7, 0) CHECK(PRDT_STOCK >= 0)
, PRDT_COM VARCHAR2(90) NOT NULL);
▶ USER_CONSTRAINTS
: 시스템 테이블
: 현재 사용자가 사용하는 테이블의 제약 조건 내용에 대한 목록
▶ USER_CONS_COLUMNS
: 시스템 테이블
: 현재 사용자가 사용하는 테이블의 제약 조건에 대한 목록
SELECT * FROM USER_CONSTRAINTS;
SELECT * FROM USER_CONS_COLUMNS;
출력 결과
OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION -------- --------------- --------------- ---------- ----------------------- C##SCOTT SYS_C008314 C EMP "EMPNO" IS NOT NULL C##SCOTT SYS_C008315 C PRODUCT "PRDT_NAME" IS NOT NULL C##SCOTT SYS_C008316 C PRODUCT "PRDT_COM" IS NOT NULL C##SCOTT SYS_C008317 C PRODUCT PRDT_PRICE >= 0 C##SCOTT SYS_C008318 C PRODUCT PRDT_STOCK >= 0 C##SCOTT SYS_C008319 U PRODUCT C##SCOTT SYS_C008320 P PRODUCTOWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION --------- --------------- ---------- ----------- -------- C##SCOTT SYS_C008314 EMP EMPNO C##SCOTT SYS_C008320 PRODUCT PRDT_NO 1 C##SCOTT SYS_C008315 PRODUCT PRDT_NAME C##SCOTT SYS_C008319 PRODUCT PRDT_NAME 1 C##SCOTT SYS_C008317 PRODUCT PRDT_PRICE C##SCOTT SYS_C008318 PRODUCT PRDT_STOCK C##SCOTT SYS_C008316 PRODUCT PRDT_COM
▶ ALTER ADD / MODIFY / DROP
: ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME (UNIQUE / PRIMARY KEY ...)(COLUMN_NAME);
: ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME CONSTRAINT CONSTRAINT_NAME NOT NULL;
→ NOT NULL은 ADD가 아닌 MODIFY로 변경
: ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;
→ [CONSTRAINT CONSTRAINT_NAME]은 반드시 지정할 필요 X
: ※ ROLLBACK 불가