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。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM