sql >> Database >  >> RDS >> Mysql

Moet een opsomming in MySQL NIET NULL zijn?

MySQL staat toe dat de waarde NULL is als u NOT NULL niet opgeeft in de kolomdefinitie.

Hier is een snelle 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)

Dus MySQL respecteert de standaardwaarde, maar staat ook NULL's toe. (Interessant is dat het ongeldige waarden afkapt en ook lege tekenreeksen toelaat, maar dat is een ander probleem)



  1. Vind alle niet-numerieke waarden in een kolom in Oracle

  2. Cloud Disaster Recovery voor MariaDB en MySQL

  3. REGEXP met PDO Mysql

  4. Databasemail inschakelen in SQL Server (T-SQL)