ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 제약 조건 (CONSTRAINTS)
    데이터베이스/Oracle 2021. 1. 29. 23:30

    제약 조건은 컬럼에 어떠한 조건을 거는 것을 말한다.

     

    해당 컬럼에 조건을 걸면 해당 컬럼 또는 테이블 이용시 제약 조건을 잘 지켜야 한다.

    PRIMARY KEY(기본키 / PK)

    테이블 당 하나만 가질 수 있는 키로서 해당 키를 가진 칼럼의 데이터는 중복이 불가하다.

     

    즉 주민등록번호, ID와 같이 다른 데이터와 겹치지 않아야 하는 데이터를 사용할 때 이용하면 좋다.

     

    PRIMARY KEY를 가진 컬럼의 데이터는 컬럼 내에서 중복이 없어야 한다.

     

    또한 NULL, 빈 문자열은 데이터로 올 수 없다.

     

    다만 컬럼을 2개 묶어서 하나의 PRIMARY KEY에 지정할 수 있다.

     

    아래와 같이 두 가지 형식으로 PRIMARY KEY를 지정할 수 있다.

     

    CREATE TABLE 테이블명(
         컬럼명 데이터형식 PRIMARY KEY
    );

     

     

    CREATE TABLE 테이블명(
         컬럼명 데이터형식,
         CONSTRAINT 프라이머리키 이름 PRIMARY KEY(컬럼명)
    );

     

    FOREIGN KEY(외래키 / FK)

    외부의 테이블을 참조 시키고 싶을 때 해당 키를 컬럼에 지정해서 외부 테이블의 컬럼과 연동 가능하다.

     

    예를 들어 같은 ID값을 공유해야 하는 A테이블(부모)와 B테이블(자식)이 있다고 가정해보자.

     

    A테이블과 B테이블은 같은 ID값을 공유해야 하는데 이때 B테이블의 ID 컬럼에 외래키를 지정하고

     

    참조테이블로 A테이블의 ID컬럼을 참조하면 둘의 부모 / 자식 관계가 생긴다.

     

    외래키를 만들 때는 주의할 점이 몇 가지 있다.

     

    • 부모 테이블(참조해야 하는 테이블)의 컬럼은 PRIMARY KEY 또는 UNIQUE로 지정되어야 한다.
    • 부모 테이블에 없는 값은 자식 테이블에 추가할 수 없다. 즉 부모 테이블에 있는 값만 자식 테이블이 가질 수 있다.

    또한 FOREIGN KEY로 묶인 부모 테이블의 컬럼 또는 값은 마음대로 삭제할 수 없다.

     

    자식 테이블에서 컬럼과 값을 참조하고 있기 때문이다.

     

    만약 삭제하고 싶다면 자식의 컬럼, 값을 먼저 삭제하고 그 다음 부모 컬럼, 값을 삭제해야 한다.

     

    혹은 ON DELETE CASCADE, ON DELETE SET NULL이라는 조건을 추가로 덧붙여준다.

     

    ON DELETE CASCADE은 부모테이블의 값을 삭제하면 자식 테이블의 값도 연동하여 삭제한다.

     

    ON DELETE SET NULL은 부모테이블의 값을 삭제하면 자식 테이블의 값이 NULL로 바뀐다.

     

    CREATE TABLE 테이블명(
         컬럼명 데이터형식,
         CONSTRAINT 외래키명 FOREIGN KEY (적용 컬럼명)
         REFERENCES 참조테이블명 (참조테이블 내 참조할 컬럼명)
         ON DELETE CASCADE(선택 사항)
    );

     

    UNIQUE (고유 키, 유일키)

    PRIMARY KEY와 비슷하다.

     

    해당 키를 가진 컬럼은 중복된 데이터를 값으로 가질 수 없다.

     

    다만 PRIMARY KEY와 차이점이라면 다음과 같다.

     

    • PRIMARY KEY와 달리 NULL도 허용한다.
    • 하나의 테이블에 다수의 UNIQUE KEY도 허용한다.

    특징으로는 위와 같은 두 가지가 가장 큰 차이다.

     

    다만 사용에 있어서 UNIQUE와 달리 PRIMARY KEY는 단 하나의 고유의 키를 갖는다.

     

    그렇게 때문에 PRIMARY KEY는 데이터 무결성을 위해 쓰인다.

     

    CREATE TABLE 테이블명(
         컬럼명 데이터형식 UNIQUE
    );

     

     

    CREATE TABLE 테이블명(
         컬럼명 데이터 형식
         CONSTRAINT 유니크키명 UNIQUE(컬럼명)
    );

     

    CHECK

    입력되는 값이 CHECK을 통해 미리 지정한 조건에 맞지 않으면 오류를 반환하는 것.

     

    특정 값이나 범위를 지정해주면 해당 안에 입력 값이 맞는지 확인한다.

     

    CREATE TABLE 테이블명(
         컬럼명 데이터 형식 CHECK(컬럼명 > 조건값)
    );

     

     

    CREATE TABLE 테이블명(
         컬럼명 데이터형식
         CONSTRAINT 체크키명 CHECK (컬럼명 > 조건값)
    );

     

    NOT NULL

    NOT NULL은 해당 컬럼에 NULL값을 허용하지 않는다는 키다.

     

    NULL 뿐 아니라 공백문자열은 허용하지 않는다.

     

    CREATE TABLE 테이블명(     
    컬럼명 데이터 형식 NOT NULL
    );

     

Designed by Tistory.