Constraint란 데이터 무결성 유지를 위하여 사용자가 지정할 수 있는 성질.
- 모든 Constraint은 데이터 사전(Data Dictionary)에 저장된다.
- 의미있는 이름을 부여해야 Constraint를 참조하기 쉽게 된다.
- Constraint의 이름은 표준 객체 명명법을 따르는게 좋다.
- Constraint의 이름은 한 사용자 내에서 중복 될 수 없다.
- Constraint의 이름을 생략했다면 ORACLE은 SYS_Cn형식의 이름을 만든다.
Constraint 정의방법
- 컬럼 레벨(Column Level)과 테이블 레벨(Table Level) 두가지 방법이 있다.
1) 컬럼 레벨 제약 조건 - 어떤 유형의 제약조건도 정의가능
컬림 [CONSTRAINT 제약조건 이름] 제한조건 유형,
2) 테이블레벨 제약 조건 - 어떤 제약조건도 정의가능(NOT NULL제외), 여러 컬럼에 제약조건 정의할 때 사용
컬럼 , ...
[CONSTRAINT 제약조건 이름] 제한조건 유형 (컬럼1, 컬럼2, ...)
Constraint 종류
PRIMARY KEY(PK) - 컬럼, 컬럼의 조합이 테이블의 각 행을 유일하게 구별시켜줌
FOREIGN KEY(FK) - 컬럼, 컬럼의 조합이 다른 테이블의 컬럼, 컬럼조합을 참조
Not Null - 컬럼이 NULL값 가질 수 없음
UNIQUE - 컬럼, 컬럼 조합이 테이블의 모든 행에서 고유한 값을 가져야 함
CHECK - 컬럼값이 반드시 참이어야 하는 조건 (조건식)
PK의 제약조건
테이블에 단 하나의 PK만 허용
NULL값 허용하지 않음
UNIQUE 인덱스를 자동 생성
FK 제약조건 주의사항
참조하고자 하는 컬럼이 PK or UNIQUE 제약조건이 있어야함
참조 컬럼의 데이터 타입 일치
ON DELETE CASCDE 옵션을 줄 수 잇음 - 참조 되는 테이블(parent)의 행을 삭제 가능, 참조하는 행들도 자동으로 삭제해주는 옵션
'DB > 오라클' 카테고리의 다른 글
TRANSACTION(트랜잭션) (0) | 2023.04.14 |
---|---|
맥북m1 DBeaver에서 현재 시간(sysdate)이 제대로 안나올때 해결방법 (0) | 2023.04.12 |