DataBase/Oracle

[Oracle] 오라클 제약조건 : NOT NULL

h0-0cat 2023. 9. 18. 15:17
728x90

오라클 제약조건

제약조건 Constraints은

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

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

 

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

 


 

NOT NULL

컬럼명 데이터타입 NOT NULL

 

컬럼을 정의할 때 NOT NULL 제약조건을 명시하면 해당 컬럼에는 반드시 데이터를 입력해야 한다.

즉 반드시 값이 들어 있어야 하는 컬럼에는 NOU NULL제약조건을 만들어 사용한다.

 

입력

CREATE TABLE EX01_1 (
	H_NULL VARCHAR2(10),
    H_NOT_NULL VARCHAR2(10) NOT NULL
);

결과

TABLE EX01_1이 생성되었습니다.

 

NOT NULL 컬럼에 데이터를 넣지 않을 때 오류 발생 

 

예)

입력

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

결과

SQL 오류: ORA-01400: NULL을  ("USER"."EX01_1"."H_NOT_NULL") 안에 삽입할 수 없습니다.

 


NOTT NULL 컬럼에 데이터를 다시 넣고 실행하면 오류가 안난다.

 

입력

INSERT INTO EX01_1 VALUES ('AA','BB');

결과

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

 

제약조건은 컬럼 속성처럼 보이지만 하나의 데이터베이스 객체이므로 고유의 이름이 있는데 별도로 이름을 명시하지 않으면 오라클에서 자동으로 생성해 준다. 사용자가 생성한 제약조건은 USER_CONSTRAINTS 시스템 뷰에서 확인할 수 있다.

 

입력

SELETE CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAEM, SERCH_CONDITION
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'EX01_1';

결과

CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION
--------------- --------------- ---------- ----------------
SYS_C0011298C EX01_1	"H_NOT_NULL" IS NOT NULL

EX01_1 테이블의 H_NOT_NULL 컬럼에 부여한 NOT NULL 제약조건이 SYS_C0011298란 이름으로 생성됐음을 확인할 수 있다.

 


 

728x90