sql >> Databáze >  >> RDS >> Mysql

Musí být výčet v MySQL NENÍ NULL?

MySQL umožní, aby hodnota byla NULL, pokud nezadáte NOT NULL v definici sloupce.

Zde je rychlý test:

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)

MySQL tedy respektuje výchozí hodnotu, ale také umožňuje hodnoty NULL. (Zajímavé je, že zkrátí neplatné hodnoty a povolí také prázdné řetězce, ale to je jiný problém)



  1. Vraťte objekt JSON pomocí PHP json_encode() &MySQL k předání funkci jQuery

  2. MySQL binární proti nebinárnímu pro hash ID

  3. MySQL Limit se vztahem mnoho k mnoha

  4. Jak zjistit, že transakce již byla zahájena?