SQL 오라클 CONSTRAINT
개념 :
Constraint란 데이터 무결성 유지를 위하여 사용자가 지정할 수 있는 성질이다.
모든 Constraint은 데이터 사전에 저장된다.
의미있는 이름을 부여했다면 Constraint을 참조하기 쉽게 된다.
Constraint의 이름은 표준 객체 명명법을 따르는게 좋다.
Constraint의 이름은 한 사용자 내에서 중복될 수 없다.
Constraint의 이름을 생략했다면 ORACLE은 SYS_Cn형식의 이름을 만든다.
정의 방법 :
컬럼 [CONSTRAINT 제약조건 이름] 제한조건 유형,
컬럼,...
[CONSTRAINT 제약조건 이름] 제한조건 유형(컬럼1, 컬럼2...)
종류 :
NOT NULL : 컬럼이 널값을 가질 수 없음
- NOT NULL 제약 조건은 NULL 값을 칼럼에 사용할 수 없게 한다.
- NOT NULL 제약 조건이 없는 칼럼은 NULL 값을 가질 수 있다.
- NOT NULL 제약 조건은 칼럼 레벨로만 정의할 수 있다.
UNIQUE : 컬럼이나 컬럼의 조합이 테이블의 모든 행에서 고유한 값을 가져야 함
- UNIQUE 제약조건은 칼럼이나 컬럼의 조합을 고유 키로 지정한다.
- 테이블에는 이 키에 대한 같은 값을 갖느느 행이 하나 밖에 없다.
- UNIQUE 키는 한 칼럼에 대한 것이라면 NULL 값을 쓸 수 있다.
- 칼럼 레벨이나 테이블 레벨에서 모두 정의할 수 있다.
- UNIQUE 칼럼에 대해 UNIQUE 인덱스가 자동으로 생성된다.
PRIMARY KEY : 컬럼이나 컬럼의 조합이 테이블의 각 행을 유일하게 구별시켜 줌
- 테이블에 단 하나의 Primary key만 허용한다.
- 여러 칼럼일지도 NULL값을 허용하지 않는다.
- 테이블이나 칼럼 레벨에서 정의할 수 있다.
- UNIQUE 인덱스를 자동으로 생성한다.
FOREIGN KEY : 컬럼이나 컬럼의 조합이 다른 테이블의 컬럼이나 컬럼의 조함을 참조함
- foreign key는 자식(child) 테이블에 정의한다.
- 부모 테이블의 값과 일치하거나 NULL이어야 한다.
- 테이블이나 칼럼 레벨에서 정의할 수 있다.
CHECK : 컬럼값이 반드시 참이여야 하는 조건
- CHECK 제약 조건은 각 행이 만족해야 하는 조건을 정의한다.
- CHECK 제약 조건에서 사용할 수 없는 것은 다음과 같다.
CURRVAL, NEXTVAL, LEVEL, ROWNUM에 대한 참조
SYSDATE, UID, USER, USERENV 함수에 대한 호출
다른 행의 값을 참조
oracle server의 예약어
칼럼이나 테이블 레벨에서 모두 정의할 수 있다.
댓글
댓글 쓰기