Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Một enum trong MySQL có cần KHÔNG ĐẦY ĐỦ?

MySQL sẽ cho phép giá trị là NULL nếu bạn không chỉ định NOT NULL trong định nghĩa cột.

Đây là một bài kiểm tra nhanh:

mysql> create table test (id serial, field ENUM('Y','N') DEFAULT 'N');
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO test (field) VALUES ('Y');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO test (field) VALUES ('N');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO test () VALUES ();
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO test (field) VALUES (NULL);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO test (field) VALUES ('Invalid');
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> show warnings;
+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1265 | Data truncated for column 'field' at row 1 | 
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from test;
+----+-------+
| id | field |
+----+-------+
|  1 | Y     | 
|  2 | N     | 
|  3 | N     | 
|  4 | NULL  | 
|  5 |       | 
+----+-------+
5 rows in set (0.00 sec)

Vì vậy, MySQL tôn trọng giá trị mặc định, nhưng cũng cho phép NULL. (Điều thú vị là nó sẽ cắt bớt các giá trị không hợp lệ và cho phép các chuỗi trống, nhưng đó là một vấn đề khác)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL từ việc chuyển SubChild đến Child đến Parent Table

  2. mysql chọn trong danh sách với regexp / chuỗi con

  3. MySQL - chọn khoảng thời gian 2 giờ một lần từ cột dấu thời gian

  4. PHP mysql_connect đặt wait_timeout

  5. Nhóm mySQL theo tên thành viên