DataBase

[Oracle] 제약조건

Dahoon06 2021. 4. 16. 14:25
728x90
반응형

무결성 제약조건

테이블에 부적절한 자료가 입력(INSERT,UPDATE) 되는 것을 방지하기 위해서 테이블 생성할 때

각 컬럼에 대해서 정의하는 여러가지 규칙, (테이블 생성 후에도 규칙 정의 가능)

 

NOT NULL

  • 해당 컬럼값으로 NULL을 허용하지 않음
  • (행 단위) 입력시 데이터를 무조건 받음
  • 유일하지 않고 반드시 입력, 수정해야 하는 컬럼에 설정

 

UNIQUE

  • 테이블내에서 해달 컬럼값은 항상 유일무이한 값을 가질 것
  • 중복을 허용하지 않음
  • 중복데이터 방지, 하지만 NULL의 중복은 방지하지 못함.
  • ADD NOT NULL은 불가능

=> 테이블 내의 모든 컬럼은 특별한 설정(NOT NULL또는 PRIMARY KEY)을 하지 않았을 경우 NULL값이 기본 설정

 

 

PRIMARY KEY(기본키)

  • 해당 컬럼값은 반드시 존재해야 하고 유일해야 한다는 조건
  • NOT NULL과 UNIQUE 조건을 동시에 만족함
  • 테이블 내에서 서로 다른 행을 구분하기 위해서 사용
  • 한 테이블 내에 단 한개의 PRIMARY KEY만 존재

 

FOREIGN KEY(외래키,참조키)

  • 해당 컬럼의 값이 다른 컬럼의 값을 참조
  • 참조되는 컬럼에 존재하지 않는 값은 입력 불가
  • 참조하는 테이블에서 설정
  • 참조되는 쪽 테이블
  • NULL값 허용(단, NULL이 아닐경우 참조 테이블에 있는 데이터가 입력되어야함)
  • 참조되는 컬럼은 반드시 UNIQUE 또는 PRIMARY KEY 설정

 

CHECK

  • 해당 컬럼에 저장 가능한 데이터 값의 범위나 사용자 조건을 지정
  • 특정 범위 내의 데이터만 입력
  • 정해진 데이터만 입력

 


제약 조건 설정

기본)

CREATE TABLE 테이블명(
컬럼명 자료형 CONSTRAINT_TYPE
);

 

 

FOREIGN KEY)

CREATE TABLE 테이블명 (

컬럼명 자료형 [CONSTRAINT 제약명] REFERENCES 참조테이블(참조컬럼명);

 

CREATAE TABLE 테이블명 (

컬럼명1 자료형,

컬럼명2 자료형,

         .

         .

CONSTRAINT 제약명 FOREIGN KEY 컬럼명2 REFERENCES 참조테이블 (참조컬럼명)

 

** 테이블이 이미 생성 되었을 때 제약조건 설정(참조)

ALTER TABLE 테이블명 ADD [CONSTRAINT 제약명] FOREIGN KEY 컬럼명2 REFERENCES 참조테이블 (참조컬럼명);

 

 

CHECK (조건식)

 


제약 이름 지정

CREATE TABLE 테이블명 (

컬럼명 자료형 [CONSTRAINT 제약명] 제약타입

);

 

ex)

CREATE TABLE department (

deptno number(2) CONSTRANIN dept2_pk PRIMARY KEY,

dname varchar2(20),

         .

         .

);

 

 


제약 추가 및 삭제

추가)

ALTER TABLE 테이블명 ADD [CONSTRAINT 제약명] || PRIMARY KEY(컬럼명);

 

삭제)

ALTER TABLE 테이블명 DROP CONSTRAINT 제약명;

ALTER TABLE 테이블명 DROP PRIMARY KEY;

 

제약 수정

ALTER TABLE 테이블명 MODIFY 컬럼명 [CONSTRAINT 제약명] NOT NULL || NULL ;

 

** || or

728x90
반응형

'DataBase' 카테고리의 다른 글

[MySQL] 계정 생성 및 권한 부여  (0) 2021.04.22
Oracle과 MySQL의 큰 차이점  (0) 2021.04.22
[MySQL] 접속  (0) 2021.04.15
[Oracle] 시퀀스(Sequence)  (0) 2021.04.14
[Oracle] 접속  (0) 2021.04.14