MySQL에서 CHAR(1) 컬럼에 NULL 값 삽입하기
MySQL에서 CHAR(1) 타입의 컬럼에 NULL 값을 삽입하려면, 해당 컬럼을 NULL을 허용하도록 선언해야 합니다. 또한 sql_mode를 'STRICT_TRANS_TABLES'로 설정해 두면 유효하지 않은 값이 입력될 때 경고가 발생하여 데이터 무결성을 더욱 엄격하게 관리할 수 있습니다.
1. 테이블 생성
먼저 아래와 같이 테이블을 생성해 보겠습니다. Gender 컬럼은 char(1) NULL로 선언되어 NULL 값을 저장할 수 있습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(50),
Gender char(1) NULL
);
Query OK, 0 rows affected (0.99 sec)2. sql_mode 설정 및 데이터 삽입
insert 명령을 사용해 몇 개의 레코드를 삽입해 보겠습니다. Chris와 David의 Gender에는 NULL을, Mike의 Gender에는 'M' 값을 입력합니다.
mysql> set sql_mode = 'STRICT_TRANS_TABLES'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> insert into DemoTable(Name,Gender) select 'Chris',NULL; Query OK, 1 row affected (0.21 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> insert into DemoTable(Name,Gender) select 'David',NULL; Query OK, 1 row affected (0.16 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> insert into DemoTable(Name,Gender) select 'Mike','M'; Query OK, 1 row affected (0.16 sec) Records: 1 Duplicates: 0 Warnings: 0
3. 결과 확인
select 문을 사용해 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+-------+--------+ | Id | Name | Gender | +----+-------+--------+ | 1 | Chris | NULL | | 2 | David | NULL | | 3 | Mike | M | +----+-------+--------+ 3 rows in set (0.00 sec)
실행 결과를 보면 Chris와 David의 Gender 컬럼에는 NULL이 정상적으로 저장되었고, Mike의 Gender에는 'M' 값이 그대로 저장된 것을 확인할 수 있습니다. 이처럼 컬럼을 NULL 허용으로 선언하기만 하면 별도의 변환 없이 CHAR(1) 컬럼에 NULL 값을 자유롭게 삽입할 수 있습니다.