Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

NOT NULL로 정의된 MySQL 열에 0 또는 빈 문자열을 어떻게 삽입할 수 있습니까?


'NOT NULL' 열을 선언한다는 것은 이 열이 NULL 값을 허용하지 않지만 영(0)이고 빈 문자열 자체가 값임을 의미합니다. 따라서 NOT NULL로 정의된 MySQL 열에 0 또는 빈 문자열을 삽입하려는 경우 문제가 없습니다. 0과 빈 문자열을 NULL로 비교하면 다음이 명확해집니다. −

mysql> Select 0 IS NULL, 0 IS NOT NULL;
+-----------+---------------+
| 0 IS NULL | 0 IS NOT NULL |
+-----------+---------------+
|         0 |             1 |
+-----------+---------------+
1 row in set (0.00 sec)

위의 결과 집합은 영(0)이 NULL이 아님을 보여줍니다. NULL은 값이 없음을 의미한다는 것을 알고 있기 때문에 영(0)은 값 자체를 의미합니다.

mysql> Select '' IS NULL, '' IS NOT NULL;
+------------+----------------+
| '' IS NULL | '' IS NOT NULL |
+------------+----------------+
|          0 |              1 |
+------------+----------------+
1 row in set (0.00 sec)

위의 결과 집합은 빈 문자열('')이 NULL이 아님을 보여줍니다. 빈 문자열('')은 값 자체를 의미합니다. 왜냐하면 NULL은 값이 없음을 의미하기 때문입니다.

예시

mysql> create table test(id int NOT NULL, Name Varchar(10));
Query OK, 0 rows affected (0.19 sec)

mysql> Insert into test6(id, name) values('1', 'Gaurav'),('0','Rahul'),('','Aarav');
Query OK, 3 rows affected, 1 warning (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 1

Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 3

mysql> Select * from test;
+----+--------+
| id | Name |
+----+--------+
|  1 | Gaurav |
|  0 | Rahul  |
|  0 | Aarav  |
+----+--------+
3 rows in set (0.00 sec)

위의 결과 집합에서 NOT NULL로 선언된 열에 빈 문자열('')을 0(0)으로 삽입할 수 있음을 관찰할 수 있습니다.