yahuian / blog

📚 blog
1 stars 0 forks source link

MySQL NULL 相关问题 #16

Open yahuian opened 8 months ago

yahuian commented 8 months ago

本文 MySQL version 8.0,InnoDB 引擎

特性

mysql> SELECT NULL, 1=NULL, 1+NULL, CONCAT('Invisible',NULL);
+------+--------+--------+--------------------------+
| NULL | 1=NULL | 1+NULL | CONCAT('Invisible',NULL) |
+------+--------+--------+--------------------------+
| NULL |   NULL |   NULL | NULL                     |
+------+--------+--------+--------------------------+
mysql> SELECT * FROM demo;
+----+-------+
| id | phone |
+----+-------+
|  1 | 1     |
|  2 | NULL  |
+----+-------+

mysql> SELECT COUNT(*) FROM demo;
+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+

mysql> SELECT COUNT(phone) FROM demo;
+--------------+
| COUNT(phone) |
+--------------+
|            1 |
+--------------+

结论

引入 NULL 会有一些小问题或者额外的写法,所以

参考

https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html

https://dev.mysql.com/doc/refman/8.0/en/problems-with-null.html

https://dev.mysql.com/doc/refman/8.0/en/is-null-optimization.html

https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_stats_method

yahuian commented 7 months ago
create table `user` (
  `id` bigint unsigned not null auto_increment primary key,
  `name` varchar(100) not null comment '名称',
  `deleted_at` datetime null comment '删除时间',
  unique index `user-name-deleted_at-unique-index`(`name`,`deleted_at`)
) comment = '用户';

image