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

NOT NULL로 선언된 MySQL 열에 빈 문자열을 삽입할 때 데이터 유형의 역할은 무엇입니까?

<시간/>

결과 집합에서 빈 문자열의 표현은 NOT NULL로 선언된 MySQL 열에 빈 문자열을 삽입할 때 데이터 유형에 따라 다릅니다. 빈 문자열을 삽입할 때 INT 0과 같은 정수 표현을 갖는 값을 MySQL에 제공한다는 것을 알고 있습니다.

이제 해당 열에 INTEGER 데이터 유형이 있는 경우 MySQL은 빈 문자열이 정수로 0에 매핑되었기 때문에 결과 집합에 0을 표시합니다.

예시

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

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

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

그러나 해당 열에 VARCHAR와 같은 다른 데이터 유형이 있는 경우 MySQL은 결과 세트에 빈 문자열을 표시합니다.

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

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

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

위의 예에서 NOT NULL로 선언된 MySQL 컬럼에 빈 문자열을 삽입할 때 데이터 유형이 어떤 역할을 하는지 알 수 있습니다.