Oracle

[DB/오라클] 제약조건(CONSTRAINT) 총정리 - 기본키 설정 법(primary key)

원코딩 2022. 7. 19. 08:36

 

 

 

 

오라클에서는 

데이터의 무결성을 유지하기 위해 

제약조건을 사용할 수 있다. 

 

 

 

 

PRIMARY KEY

pk : primary key


중복이 없는 데이터로 기본키이다. 

중복이 없기 때문에 대표격으로 사용된다. 

 

우리가 많은 사람들 중에서 특정인을 구분할 때

주민등록번호를 사용한다. 

이름과 나이는 중복 사용이 많아 구분이 어렵지만 

주민등록번호는 한 사람만 가지는 

고유한 번호이기 때문에 식별에 적합하다.

 

이처럼 primary key 기본키는 

주민등록번호, ID, 게시물 번호처럼

중복되지 않으며 NULL값을 허용하지 않는

고유한 데이터에 설정하는 제약조건이다.

 

CONSTRAINT 제약조건명 PRIMARY KEY(컬럼명)

 

 

 

 

NOT NULL

nn : not null


NOT NULL로 제약조건을 설정하면 공백을 사용할 수 없다.

 

회원가입을 할 때 어떤 데이터는 입력하지 않아도 되지만, 

어떤 데이터는 입력하지 않으면 다음 창으로 넘어가지 않는다.

이런 경우 NOT NULL로 제약 조건을 설정했다고 볼 수 있다.

 

이름, 전화번호 , 주소와 같이 꼭 필요한 정보에는 

NOT NULL을 설정해서 사용자에게 값을 요청할 수 있다.

 

컬럼명 데이터형 CONSTRAINT 제약조건명 NOT NULL

 

 

 

 

UNIQUE

uk : unique


UNIQUE중복이 없는 데이터로 후보키로 사용된다.

 

회원가입을 할 때 이메일이나 닉네임, 핸드폰 번호 등은

중복 확인을 하는 경우가 많다.

중복을 허용하지 않기 때문에 후보키로 사용된다. 

 

후보키는 누군가를 식별하고자 할 때 

기본키 다음으로 사용되는 기본키 격의 후보를 말한다.

 

중복이 없다는 점에서 기본키와 무엇이 다를까 싶겠지만

UNIQUE는 NULL값이 허용된다.

 

CONSTRAINT 제약조건 명 UNIQUE(컬럼명) 

 

 

 

 

 

FORIGN KEY

fk : foreign key


우선 외래키는 제약조건은 아니다.

테이블 간의 관계를 생성하면 외래키가 발생된다. 

테이블이 어느 한쪽 테이블을 참조한다면 관계를 설정하게 된다.

만약 참조하려는 테이블에 기본키가 있었다면

그 기본키가 새롭게 생성하는 테이블의 외래키가 된다. 

 

기본키를 가지고 있는 부모 테이블이 생성된 후

부모 테이블을 참조하는 자식 테이블에 외래키가 생성되는 것이다.

 

 

이처럼 부모 클래스의 ParentNo 기본키를 사용하여

자식 클래스가 관계를 맺고 있다.

자식 클래스의 ParentNo 컬럼은 외래키가 된다. 

 

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

 

 

 

 

DEFAULT


데이터를 입력할 때 null 값이라면 자동으로 값을 입력하도록 

기본값을 설정 할 수 있다. 

기본값을 설정할 때는 DEFAULT 를 사용한다. 

 

예를 들어 날짜를 입력할 때 

사용자가 값을 입력하지 않는다면 

자동으로 오늘 날짜가 입력되도록

DEFAULT 값을 SYSDATE로 설정하면 된다. 

 

 

 

 

 

 

 

 

CHECK

ck : check


데이터 값을 몇가지 지정할수 있다. 

성별의 경우 남자, 여자 두가지 경우 밖에 없기 때문에 

남자, 여자 값만 선택할 수 있도록 

CHECK 설정을 통해 지정할 수 있다. 

 

CONSTRANINT member_sex_ck CHECK(sex IN('남자','여자'))

 

CONSTRAINT 제약조건명 CHECK (컬럼명 IN())