MySQL INT 컬럼에 NULL 저장이 가능한가?
네, 가능합니다. MySQL에서 INT 타입의 컬럼은 기본적으로 NULL 값을 허용(nullable)합니다. 별도의 제약 조건(NOT NULL)을 지정하지 않는 한, 해당 컬럼에는 숫자 대신 NULL을 자유롭게 저장할 수 있습니다.
INT 컬럼에 NULL을 삽입하는 기본 문법은 다음과 같습니다.
INSERT INTO yourTableName(yourIntColumnName) values(NULL);
예제 테이블 생성
실제 동작을 확인하기 위해 테스트용 테이블을 만들어 보겠습니다. 아래 쿼리는 Id를 기본 키로, Price를 일반 INT 컬럼으로 정의한 테이블입니다.
mysql> create table nullableIntDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Price int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.80 sec)여기서 주목할 점은 Price 컬럼에 NOT NULL 제약이 없다는 것입니다. 따라서 이 컬럼에는 NULL 값이 들어갈 수 있습니다.
NULL 및 숫자 데이터 삽입
이제 Price 컬럼에 NULL과 실제 숫자 값을 번갈아 삽입해 보겠습니다.
mysql> insert into nullableIntDemo(Price) values(NULL); Query OK, 1 row affected (0.11 sec) mysql> insert into nullableIntDemo(Price) values(100); Query OK, 1 row affected (0.15 sec) mysql> insert into nullableIntDemo(Price) values(200); Query OK, 1 row affected (0.12 sec) mysql> insert into nullableIntDemo(Price) values(NULL); Query OK, 1 row affected (0.13 sec) mysql> insert into nullableIntDemo(Price) values(NULL); Query OK, 1 row affected (0.10 sec)
모든 INSERT 문이 오류 없이 정상 실행된 것을 확인할 수 있습니다.
저장된 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> select *from nullableIntDemo;
실행 결과는 다음과 같습니다.
+----+-------+ | Id | Price | +----+-------+ | 1 | NULL | | 2 | 100 | | 3 | 200 | | 4 | NULL | | 5 | NULL | +----+-------+ 5 rows in set (0.00 sec)
결론
위 출력 결과에서 확인할 수 있듯이, MySQL의 INT 컬럼은 명시적으로 NOT NULL로 선언하지 않는 한 NULL 값을 저장할 수 있는 nullable 컬럼입니다. 즉, INT 타입이라고 해서 반드시 0이나 특정 숫자만 저장해야 하는 것은 아니며, '값이 없음'을 의미하는 NULL도 유효한 상태로 사용할 수 있습니다.