본문 바로가기
Database/Oracle

Oracle [5] 제약조건

by 8Antony 2022. 6. 22.

 

제약조건이란?

 

 

데이터를 추가, 삭제, 수정이 일루어질 때 DB의 무결성을 유지한다.

 

 

PRIMARY KEY 제약조건

 

 

테이블의 모든 데이터를 유일하게 식별해주는 식별자

 

PK로 설정된 컬럼의 중복 데이터는 허용되지 않음

 

-> UNIQUE + NOT NULL

 

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

 

 

--컬럼 단위에서 지정
      CREATE TABLE 테이블 명 (
          컬럼1 데이터타입 CONSTRAINT 제약조건 PRIMARY KEY,
          컬럼2 .....,

      );
      
--테이블 단위에서 지정
      CREATE TABLE 테이블 명 (
          컬럼1 데이터타입,
          컬럼2 데이터타입,
          컬럼3 ....
          CONSTRAINT 제약조건 PRIMARY KEY(PK로 지정할 컬럼명)
      );

 

 

CREATE TABLE BOARD (
    NO NUMBER,
    NAME VARCHAR2(50),
    SUB VARCHAR2(200),
    CONSTRAINT BOARD_NO_PK PRIMARY KEY(NO)
);



--value는 1이라는 PK삽입
INSERT INTO BOARD (
    NO
) VALUES (
    1
);

 

 

FOREIGN KEY

 

테이블 간의 관계를 뜻함(다른 테이블에서 참조해오는 키 값)

 

FK를 설정하면 테이블간의 종속성이 생성된다.(부모, 자식 관계)

 

 

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

 

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

 

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

 

 

 

테이블 단위에서 지정
      CREATE TABLE 테이블 명 (
          컬럼1 데이터타입,
          컬럼2 데이터타입,
          ....
          CONSTRAINT 제약조건 FOREIGN KEY(컬럼명)
          REFERENCES 참조할 테이블 명(참조할 컬럼명)
          (ON DELETE CASCADE)
      )

 

 

CREATE TABLE B_CONTENT (
    NO NUMBER,
    CONTENT VARCHAR2(1000),
    CONSTRAINT B_CONTENT_NO_FK FOREIGN KEY(NO)
                                REFERENCES BOARD(NO)
);


INSERT INTO B_CONTENT (
    NO,
    CONTENT
) VALUES (
    1,
    'DDD'
);

 

 

CHECK

 

 

데이터의 값의 범위나 조건을 설정하여 조건에 해당되는 데이터만 허용한다.

 

 

DEFAULT

 

 

아무런 데이터를 입력하지 않았을 경우 지정한 데이터가 자동으로 입력된다. 

 

 

테이블 수정 방식

 

 

테이블을 먼저 생성 후 추가해 준다.

 

 

CREATE TABLE ST (
    SNO VARCHAR2(2),
    SNAME VARCHAR2(50),
    CNO VARCHAR2(2)
);


//ST 테이블에 PK추가
ALTER TABLE ST
    ADD CONSTRAINT ST_SNO_PK PRIMARY KEY(SNO);
  
  
//ST 테이블에 FK 추가
ALTER TABLE ST
    ADD CONSTRAINT ST_CNO_FK FOREIGN KEY(CNO) REFERENCES CLASS(CNO);
    
    
//삭제
ALTER TABLE ST
	DROP CONSTRAINT 제약조건 이름

 

 

 

 

 

 

댓글