mysql数据库设计字段不为空

起因,我设计数据库的时候一般情况下默认是不愿意让字段为空的,因为is null这样的话,是不走索引。所以我基本上设置了不为空。

因为设置了不为空,所以sql也要和原来的is null 变成="".之前用的逆向工程的andisnull查询就会失效。

1.创建数据库

 

2.创建脚本

CREATE TABLE `user` (
  `id` bigint NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `PK_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

3.给name增加索引

初始化数据

 

 

 

4.脚本测试

EXPLAIN select * from `user` where id=3 and name=""

 

 走索引了,并且数据查询出来了

 

EXPLAIN select * from `user` where id=3 and name is null

 

 没有走索引,数据还没有查询出来。

结论:大家在设计数据库,字段不为null的时候,一定要记得额使用="",不要使用 is null.

对于身份证这些需要建立唯一索引的字段不能使用空字符串表示,只能设置字段为null。

 

posted @ 2022-03-06 09:36  小陈子博客  阅读(1922)  评论(0编辑  收藏  举报