본문 바로가기

프로그래밍/DataBase

[DataBase]제약조건

제약조건이란

 부적합한 데이터가 들어오는 것을 막기 위해서 사용하는 조건이다.

 

 

제약조건의 종류

제약조건 종류

설명

Primary key

Not Null + Unique를 합쳐놓은 역할을 한다.

= 컬럼에 null값이 들어오면 안되면서 중복된 값을 배재한다.
(기본키, 테이블 당 한번 선언 가능.)
Foreign key 특정 테이블의 특정 컬럼을 참조한다. 참조하는 컬럼의 값만 사용하능하다. (외래키)
 Unique 중복된 값이 들어오는 것을 막아준다.
Not Null 컬럼에 null값이 들어오는 것을 막아준다.
Check 해당 컬럼이 만족해야하는 조건문을 지정한다.

 

제약조건 이름

 제약조건을 사용할때 제약조건명은 사용자가 직접 지정하거나 oracle이 자동으로 부여해주도록 할 수 있다.

제약조건이름을 사용자가 직접 지정할때는 통상적으로 '테이블약자_컬럼약자_제약조건유형약자' 의 방식으로 지정한다.

 

ex)

emp_empid_pk

emp_did_fk

emp_email_uk

...

 

 

제약조건 생성

 

열 선언과 함께 생성할 경우(컬럼레벨의 문법)

create table 테이블명
(열1이름 열속성,

 열2이름 열속성
 CONSTRAINT 제약조건이름1 제약조건1
 CONSTRAINT 제약조건이름2 제약조건2
 CONSTRAINT t1_id_nn not null
 ... ,
 
 열3이름 열속성,
 ...);

 열2에 대한 속성을 지정하고 ,(콤마) 없이 바로 제약조건을 생성함으로서 열2에 대한 제약조건임을 알 수 있기 때문에 따로 열의 이름을 지정할 필요가 없다.

 

 NOT NULL의 경우는 컬럼레벨의 문법으로만 사용 할 수 있다.

 

 'CONSTRAINT 열이름' 의 경우 생략하여 생성 할 수도 있다.

 

ex)

열2이름 열속성 PRIMARY KEY

 

 

 열 선언 완료 후 생성할 경우(테이블레벨의 문법)

create table 테이블명
(열1이름 열속성,

 열2이름 열속성,
 
 열3이름 열속성,
 
 
 CONSTRAINT emp_emp_id_pk PRIMARY KEY (열이름)
 ...);

열 생성이 모두 완료 된 후 제약조건을 생성하는 경우로, 누구의 제약조건인지 알 수 없음으로 열이름을 따로 지정해 준다.

 

 

제약조건 추가

 

 외래키

ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건이름
FOREIGN KEY (컬럼명)
REFERENCES 부모테이블명(PK 컬럼명) [ON DELETE CASCADE / ON UPDATE CASCADE];

 

 기본키

ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건이름
PRIMARY KEY(컬럼명);

 

 

 NOT NULL 제약 조건 추가

ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입
CONSTRAINT 제약조건이름 NOT NULL;

 

 

제약조건 이름 변경

ALTER TABLE 테이블명
RENAME CONSTRAINT 기존제약조건명 TO 새로운제약조건명;

 

 

 

제약조건 삭제

ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건이름;

 

ALTER TABLE 테이블명
DROP PRIMARY KEY;

PRIMARY KEY만 제약조건의 이름 없이 제약조건 유형만으로 삭제 할 수 있다.

'프로그래밍 > DataBase' 카테고리의 다른 글

[DataBase]AS  (0) 2021.03.22
[DataBase]DESC  (0) 2021.03.22
[DataBase]서브쿼리  (0) 2021.03.10
[DataBase]Join  (0) 2021.03.10
[DataBase]DDL, DML, DCL  (0) 2021.03.08