Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL xử lý các giá trị rỗng và null như thế nào cho các kiểu liệt kê?

MySQL chỉ chấp nhận các giá trị trống để liệt kê nếu chế độ SQL không được đặt là TRADITIONAL, STRICT_TRANS_TABLES hoặc STRICT_ALL_TABLES. Nếu không, MySQL sẽ không chấp nhận các giá trị trống và tạo ra lỗi. Như chúng ta biết rằng mỗi giá trị liệt kê có một giá trị chỉ mục, giá trị trống sẽ có giá trị chỉ mục bằng 0.

Ví dụ

mysql> SET SQL_MODE ='Traditional';
Query OK, 0 rows affected (0.00 sec)

mysql> Insert into result(id, name,grade) values(100, 'Raman', '');
ERROR 1265 (01000): Data truncated for column 'Grade' at row 1

Bây giờ, sau khi thay đổi chế độ SQL, chúng tôi sẽ có thể chèn chuỗi trống như sau -

mysql> Set SQL_MODE ='';
Query OK, 0 rows affected (0.00 sec)

mysql> Insert into result(id, name, grade) values(100, 'Raman', '');
Query OK, 1 row affected, 1 warning (0.04 sec)

mysql> select * from result;
+-----+-------+-------+
| Id  | Name  | Grade |
+-----+-------+-------+
| 100 | Raman |       |
+-----+-------+-------+
1 row in set (0.00 sec)

MySQL chỉ chấp nhận các giá trị NULL cho kiểu liệt kê nếu chúng ta không chỉ định NOT NULL với cột ENUM. Như chúng ta biết rằng mỗi giá trị liệt kê có một giá trị chỉ mục, giá trị chỉ mục của NULL là NULL.

Ví dụ

mysql> Insert into result(id, name, grade) values(101, 'Rahul', NULL);
Query OK, 1 row affected (0.04 sec)

Truy vấn trên sẽ chèn giá trị NULL vì chúng tôi không chỉ định NOT NULL trong khai báo cột ENUM.

mysql> select * from result;
+-----+-------+-------+
| Id  | Name  | Grade |
+-----+-------+-------+
| 100 | Raman |       |
| 101 | Rahul | NULL  |
+-----+-------+-------+
2 rows in set (0.00 sec)