더북(TheBook)

① 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란 이름으로 생성됐음을 확인할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.