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의 예약어
    칼럼이나 테이블 레벨에서 모두 정의할 수 있다.

댓글

이 블로그의 인기 게시물

javascript ===, ==, >=, <=연산자

SQL oracle 내장함수[문자열 처리]

javascript 데이터 타입과 값