MySQLのnot null default

2978 ワード

建表文各行末尾のNOT NULL DEFAUTLの意味
この文の意味は、フィールドがnullではなく、データを挿入するときにフィールドの値を設定しない場合に使用するデフォルト値を設定することです.Insert操作でフィールドを補間しない場合、データベースはフィールドがnullではないと判断し、default値を探してデータベースに書き込まれます.default値がなければ、エラーを報告したり、挿入に失敗したり、警告を挿入に成功したりします(コミュニティ版はエラーを報告し、商用版は警告を挿入し、空欄を挿入します).詳細は以下の実行状況を参照してください.
このようにnull値の挿入を避けるために単純にnot nullを設定するだけでは不十分であり、defaultで挿入を設定する必要がある場合に値を設定していない場合、データベースが記入すべきデフォルト値が必要になる場合が多く、挿入に失敗する可能性があります.
注:nullは“ではありませんて、比較を行う時nullは”のではありませんて、nullの値に対してIFULL()、IS NULL、IS NOT NULLで処理する必要があるのは=等号ではありません.
mysql> \W                //      ,  MySQL     ,     \w
Show warnings enabled.
mysql> insert into test (name) values('aa'); 
Query OK, 1 row affected, 1 warning (0.01 sec)

Warning (Code 1364): Field 'tmp' doesn't have a default value    //     ,    
mysql> show variables like '%version%';
+-------------------------+---------------------------------------------------------+
| Variable_name           | Value                                                   |
+-------------------------+---------------------------------------------------------+
| innodb_version          | 5.5.32                                                  |
| protocol_version        | 10                                                      |
| slave_type_conversions  |                                                         |
| version                 | 5.5.32-enterprise-commercial-advanced-log               |
| version_comment         | MySQL Enterprise Server - Advanced Edition (Commercial) |
| version_compile_machine | x86_64                                                  |
| version_compile_os      | Linux                                                   |
+-------------------------+---------------------------------------------------------+
7 rows in set (0.00 sec)
mysql> \W
Show warnings enabled.
mysql> insert into test (name) values('b');
ERROR 1364 (HY000): Field 'note' doesn't have a default value  //    ,    
mysql> show variables like '%version%';
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.6.14                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| version                 | 5.6.14                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86                          |
| version_compile_os      | Win32                        |
+-------------------------+------------------------------+
7 rows in set (0.00 sec)