① NOT NULL
컬럼명 데이터타입 NOT NULL
앞의 NULL에서 설명했듯이, 컬럼을 정의할 때 NOT NULL 제약조건을 명시하면 해당 컬럼에는 반드시 데이터를 입력해야 한다. 즉 반드시 값이 들어 있어야 하는 컬럼에는 NOT NULL 제약조건을 만들어 사용한다. 다음 예제를 보면 NOT NULL 컬럼에 데이터를 넣지 않을 때 발생하는 오류를 확인할 수 있다.
입력
CREATE TABLE ex2_6 (
COL_NULL VARCHAR2(10),
COL_NOT_NULL VARCHAR2(10) NOT NULL
);
결과
table EX2_6이(가) 생성되었습니다.
입력
INSERT INTO ex2_6 VALUES ('AA', '');
결과
SQL 오류: ORA-01400: NULL을 ("ORA_USER"."EX2_6"."COL_NOT_NULL") 안에 삽입할 수 없습니다.
입력
INSERT INTO ex2_6 VALUES ('AA', 'BB');
결과
1개 행 이(가) 삽입되었습니다.
제약조건은 컬럼 속성처럼 보이지만 하나의 데이터베이스 객체이므로 고유의 이름이 있는데 별도로 이름을 명시하지 않으면 오라클에서 자동으로 생성해 준다. 사용자가 생성한 제약조건은 USER_CONSTRAINTS 시스템 뷰에서 확인할 수 있다.
입력
SELECT constraint_name, constraint_type, table_name, search_condition
FROM user_constraints
WHERE table_name = 'EX2_6';
결과
CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION
--------------- --------------- -------------- ----------------
SYS_C0011298C EX2_6 "COL_NOT_NULL" IS NOT NULL
ex2_6 테이블의 col_not_null 컬럼에 부여한 NOT NULL 제약조건이 SYS_C0011298란 이름으로 생성됐음을 확인할 수 있다.