2022-07-01
mysql 明明设置了not null default,为什么用where name is null还能查到null值
mysql 明明设置了not null default,为什么用where name is null还能查到数据null值
见下面的例子
mysql> create table t (id int primary key, name varchar(20) not null default 'kong');
Query OK, 0 rows affected (0.56 sec)
mysql> insert into t values (1,'zhangsan');
Query OK, 1 row affected (0.10 sec)
mysql> insert into t values (2,'lisi');
Query OK, 1 row affected (0.11 sec)
mysql> select * from t;
+----+----------+
| id | name |
+----+----------+
| 1 | zhangsan |
| 2 | lisi |
+----+----------+
2 rows in set (0.00 sec)
mysql> alter table t add column create_time datetime not null default '0000-00-00 00:00:00';
Query OK, 0 rows affected (0.39 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> insert into t values ('4','wangwu','2022-07-01 10:00:00');
Query OK, 1 row affected (0.11 sec)
mysql> select * from t;
+----+----------+---------------------+
| id | name | create_time |
+----+----------+---------------------+
| 1 | zhangsan | 0000-00-00 00:00:00 |
| 2 | lisi | 0000-00-00 00:00:00 |
| 4 | wangwu | 2022-07-01 10:00:00 |
+----+----------+---------------------+
3 rows in set (0.00 sec)
mysql> select * from t where create_time is null;
+----+----------+---------------------+
| id | name | create_time |
+----+----------+---------------------+
| 1 | zhangsan | 0000-00-00 00:00:00 |
| 2 | lisi | 0000-00-00 00:00:00 |
+----+----------+---------------------+
2 rows in set (0.00 sec)很不解呀,明明create_time列有值0000-00-00 00:00:00,但是select * from t where create_time is null 却认为有null值。
请问这是怎么回事
我来答
添加附件
收藏
分享
问题补充
9条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏


评论

