sql >> Databasteknik >  >> RDS >> Mysql

Behöver en enum i MySQL INTE vara NULL?

MySQL tillåter att värdet är NULL om du inte anger NOT NULL i kolumndefinitionen.

Här är ett snabbt 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)

Så MySQL respekterar standardvärdet, men tillåter också NULL. (Intressant nog kommer det att trunkera ogiltiga värden och även tillåta tomma strängar, men det är en annan fråga)



  1. Hur visar jag det fullständiga innehållet i en text- eller varchar(MAX)-kolumn i SQL Server 2008 Management Studio?

  2. Var lagrar MySQL databasfiler på Windows och vad heter filerna?

  3. mysql hitta minsta + unika id tillgängligt

  4. Hur man ändrar sortering till utf8_bin på en gång