MySQL에서 DEFAULT NULL은 필수가 아닙니다
결론부터 말하자면, DEFAULT NULL을 명시적으로 추가할 필요는 없습니다. MySQL에서는 별도의 기본값을 지정하지 않으면 컬럼이 자동으로 NULL 값을 허용하며, 값이 입력되지 않은 레코드에는 기본적으로 NULL이 저장되기 때문입니다.
즉, DEFAULT NULL을 생략하고 값을 지정하지 않은 채 레코드를 삽입하더라도, 해당 컬럼에는 자동으로 NULL 값이 들어갑니다.
예제: 테이블 생성하기
먼저 테이블을 생성해 보겠습니다. 이때 DEFAULT NULL 구문은 사용하지 않습니다.
mysql> create table DemoTable
(
FirstName varchar(100)
);
Query OK, 0 rows affected (0.57 sec)레코드 삽입하기
insert 명령을 사용해 몇 개의 레코드를 삽입합니다. 일부 레코드는 이름 값을 넣고, 일부는 아무 값 없이 삽입합니다.
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.12 sec)결과 확인하기
select 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-----------+ | FirstName | +-----------+ | Chris | | NULL | | NULL | | David | +-----------+ 4 rows in set (0.00 sec)
정리
위 결과에서 볼 수 있듯이, 값을 지정하지 않고 삽입한 두 번째와 세 번째 레코드에는 자동으로 NULL이 저장되었습니다. 이처럼 MySQL은 컬럼에 아무런 제약 조건(NOT NULL 등)이 없다면 기본적으로 NULL을 허용하므로, DEFAULT NULL을 굳이 작성하지 않아도 동일한 동작을 보장합니다.
다만 코드의 가독성과 의도를 명확히 하고 싶다면 스키마 정의 시 DEFAULT NULL을 명시하는 것도 좋은 습관이 될 수 있습니다.