NULL은 그 자체로 값이기 때문에 NOT NULL 제약 조건이 있는 문자 유형 열에 NULL 키워드를 값으로 삽입하는 것은 상당히 가능합니다. 다음 예는 그것을 보여줄 것입니다 -
예시
NOT NULL 제약 조건과 함께 문자 유형 열 'Name'이 있는 테이블 test2가 있다고 가정합니다. 다음과 같이 DESCRIBE 문에서 확인할 수 있습니다. -
mysql> Describe test2\G *************************** 1. row *************************** Field: id Type: int(11) Null: NO Key: Default: NULL Extra: *************************** 2. row *************************** Field: NAME Type: varchar(20) Null: NO Key: Default: NULL Extra: 2 rows in set (0.03 sec)
이제 다음 쿼리를 사용하여 'Name' 열에 값으로 NULL을 삽입할 수 있습니다.
mysql> Insert into test2 values(2, 'NULL'); Query OK, 1 row affected (0.06 sec) mysql> select * from test2; +----+--------+ | id | NAME | +----+--------+ | 1 | Gaurav | | 2 | NULL | +----+--------+ 2 rows in set (0.00 sec)
'NULL'과 '값으로서의 NULL'의 차이점을 이해하기 위해 다음 두 쿼리를 실행할 수 있습니다.
mysql> delete from test2 where name IS NULL; Query OK, 0 rows affected (0.00 sec)
위의 쿼리는 0 행에 영향을 미치므로 NULL 행이 없음을 의미합니다. SELECT 쿼리에서 삭제된 행이 없는지 확인할 수 있습니다.
mysql> select * from test2; +----+--------+ | id | NAME | +----+--------+ | 1 | Gaurav | | 2 | NULL | +----+--------+ 2 rows in set (0.00 sec) mysql> delete from test2 where name = 'NULL'; Query OK, 1 row affected (0.09 sec)
위 쿼리는 1행에 영향을 미치며, 이는 값으로 NULL을 갖는 행이 있음을 의미합니다. 'NAME' 컬럼의 값이 NULL인 행이 삭제되었음을 SELECT 쿼리에서 확인할 수 있다.
mysql> select * from test2; +----+--------+ | id | NAME | +----+--------+ | 1 | Gaurav | +----+--------+ 1 row in set (0.00 sec)