MySQL에서 INT 컬럼에 NULL 값 삽입하기
MySQL의 INT 타입 컬럼에 NULL 값을 삽입하는 것은 가능합니다. 단, 한 가지 조건이 있습니다. 해당 컬럼에 NOT NULL 제약조건이 설정되어 있지 않아야 합니다.
기본 문법
NULL 값을 삽입하는 기본적인 문법은 다음과 같습니다.
INSERT INTO yourTableName(yourColumnName) values(NULL);
예제 테이블 생성
실제 동작을 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다. 아래 쿼리로 테이블을 만들 수 있습니다.
mysql> create table InsertNullDemo
-> (
-> StudentId int,
-> StudentName varchar(100),
-> StudentAge int
-> );
Query OK, 0 rows affected (0.53 sec)
위 테이블은 학생 ID(StudentId), 이름(StudentName), 나이(StudentAge) 세 개의 컬럼으로 구성되어 있으며, 모든 컬럼은 NOT NULL 제약조건 없이 생성되었습니다.
NULL 값 삽입 방법
컬럼에 값을 전달하지 않으면 MySQL은 기본적으로 NULL을 삽입합니다. 여기서는 StudentAge 컬럼에 NULL이 들어가도록 레코드를 삽입해 보겠습니다.
mysql> insert into InsertNullDemo(StudentId,StudentName) values(101,'Mike');
Query OK, 1 row affected (0.19 sec)
mysql> insert into InsertNullDemo values(101,'Mike',NULL);
Query OK, 1 row affected (0.24 sec)
첫 번째 INSERT 문처럼 특정 컬럼만 지정하고 값을 넣지 않으면, 생략된 컬럼에는 자동으로 NULL이 저장됩니다. 두 번째 INSERT 문처럼 명시적으로 NULL을 지정하는 방법도 가능합니다.
결과 확인
테이블의 모든 레코드를 조회하여 INT 컬럼에 NULL이 정상적으로 삽입되었는지 확인해 보겠습니다.
mysql> select *from InsertNullDemo;
실행 결과는 다음과 같습니다. INT 타입인 StudentAge 컬럼에 NULL이 저장된 것을 확인할 수 있습니다.
+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
| 101 | Mike | NULL |
| 101 | Mike | NULL |
+-----------+-------------+------------+
2 rows in set (0.00 sec)
주의사항
NULL 삽입이 실패하는 경우는 대부분 컬럼 정의 시 NOT NULL 제약조건이 걸려 있기 때문입니다. 이 경우 NULL 대신 기본값(default value)을 설정하거나, 컬럼 정의를 변경(ALTER TABLE)하여 NULL을 허용하도록 수정해야 합니다. 또한 NULL은 빈 문자열('')이나 숫자 0과는 완전히 다른 개념이므로, 조회 시 IS NULL 연산자를 사용해야 올바르게 필터링할 수 있다는 점도 기억해 두세요.