이전과 다르게 칼럼의 데이터 타입 다음에 NOT NULL 또는 NULL을 추가했습니다. NOT NULL은 해당 칼럼에는 반드시 값을 입력해야 한다는 뜻입니다. 따라서 학번과 이름 칼럼인 student_no, student_name 칼럼에는 반드시 값을 입력해야 하고, 입력하지 않으면 오류가 납니다. 나머지 칼럼에는 NULL을 명시했는데, 해당 칼럼에 값을 입력하지 않아도 오류가 발생하지 않습니다. 물론 값을 입력하는 것이 더 좋습니다. 이렇게 NULL을 명시한 칼럼을 NULL 허용 칼럼이라고 합니다.
입학일을 뜻하는 enter_date 칼럼에는 아무것도 명시하지 않았죠. 이처럼 옵션을 생략하면 자동으로 NULL이 적용됩니다. 즉, NULL을 명시하거나 명시하지 않으면 해당 칼럼은 NULL 허용 칼럼이 됩니다. 하지만 NOT NULL은 반드시 명시해야 합니다.
이렇게 DBMS 자체에서 정확한 값이 입력되도록 처리하면 RDBMS의 특징 중 하나인 데이터 무결성을 보장하게 됩니다. 즉, NULL 처리는 데이터 무결성을 보장하는 한 가지 방법입니다.
‘그럼 모든 칼럼에 NOT NULL을 설정하면 되지 않을까?’라고 생각할 수 있습니다. 물론 그렇습니다. 하지만 현실적으로 모든 칼럼에 NOT NULL을 설정하는 것은 그리 바람직하지 않습니다. 예를 들어, 입학했지만 아직 반이 배정되지 않은 상태에서 데이터를 입력해야 하는 경우가 있을 수 있습니다. 이때 모든 칼럼에 NOT NULL을 적용하면 데이터를 입력할 수 없겠죠. 따라서 일단 NOT NULL이 설정된 칼럼에만 데이터를 입력하고 나중에 입력하지 않는 다른 칼럼에 데이터를 입력(실제로는 수정)하는 것이 더 좋은 방법입니다.
코드 4-8을 실행해서 테이블을 만들고 이 테이블이 어떻게 생겼는지 확인해 봅시다. 어떻게 확인하면 될까요? 코드 4-6에서 했던 것처럼 DESCRIBE를 사용하면 됩니다. DESCRIBE 대신 DESC를 사용해도 되고요.
코드 4-9
DESC highschool_students;
실행결과