DataBase/Oracle

[Oracle] 오라클 제약조건 : 기본키

h0-0cat 2023. 9. 20. 16:43
728x90

오라클 제약조건 : 기본키

제약조건 Constraints은

컬럼에 대한 속성 형태로 정의하지만 엄연히 오라클 데이터베이스 객체 중 하나이며,

데이터 무결성을 보장하기 위한 용도로 사용된다.

 

제약조건에는 NOT NUL, UNIQUE, 기본키, 외래키, CHECK등이 있다.

 


 

기본키

기본키라고도 하고 영어 그대로 ' Primary key '라고 한다.

보통 테이블에 키를 생성했다라고할 때, 이는 기본키를 의미한다.

기본키는 UNIQUE와 NOT NUL 속성을 동시에 가진 제약조건으로, 테이블 당 1개의 기본키만 생성할 수 있다.

 

컬럼명 데이터타입 PRIMARY KEY
혹은
CONSTRAINTS 제약조건명 PRIMARY KEY(컬럼명, ...)

 

입력

CREATE TABLE EX01_3 (
	H1	VARCHAR2(10)	PRIMARY KEY,
    H2	VARCHAR2(10)	
);

결과

TABLE EX01_3이 생성되었습니다.

 

입력

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEARCH_CONDITION
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'eX01_3';

결과

CONSTRAINT_NAME	CONSTRAINT_TYPE	TABLE_NAME	SEARCH_CONDITION
--------------- --------------- ----------  ----------------
SYS_C0011180	P				EX01_3

 

기본키는 CONSTRAINT_TYPE이 P(PRIMARY KEY)로 생성된다.

 


 

NULL 입력시 오류 발생

입력

INSERT INTO EX01_3 VALUES ('', 'AA');

결과

SQL 오류: ORA-01400: NULL을 ("ORA_USER"."EX01_3"."H1")안에 삽입할 수 없습니다.

 

기본키는 NOT NULL 속성이므로 NULL 입력이 불가능하다.


입력

INSERT INTO EX01_3 VALUES ('AA', 'AA');

결과

1개 행이 삽입되었습니다.

입력

INSERT INTO EX01_3 VALUES ('AA', 'AA');

결과

 

SQL 오류: ORA-00001: 무결성 제약 조건(ORA_USER.SYS_C0011180)에 위배됩니다.

값이 같은 데이터 역시 입력할 수 없다.

 


예제에서는 H1 컬럼을 기본키로 잡았는데, 여러 컬럼을 하나의 기본키로 만들 수도 있다.

이 경우에는 CONSTRAINTS 키워드를 사용해서 생성해야 한다.

기본키로 사용할 수 있는 컬럼 개수는 최대 32개다.

 

보통, 테이블을 만들 때 특수한 경우를 제외하고 기본키는 반드시 생성하는 것이 원칙이다.

 

 

 

728x90