对”唯一键可以包含NULL值,并且每个NULL值都是唯一的(即NULL!=NULL)“理解

时间:2023-01-05 00:38:05

  因为最近在写一篇关于字符串模糊检索的论文,开始比较细致的研究数据库(MySQL)中的index问题,变到图书馆借了本《Effective MySQL之SQL语句最优化》(Ronald Bradford著,李雪峰译)。今天在里面看到了这句”唯一键可以包含NULL值,并且每个NULL值都是唯一的(即NULL!=NULL)“。第一反应是:我去,什么鬼?简直不是人话啊!!其实计算机行业好多这种话,想了想然后便到网上查找了写资料!

  使用WHERE子句的SQL SELECT命令来从MySQL表获取数据。但是,当我们试图给的条件比较字段或列的值为NULL,它不能正常工作。

为了处理这种情况,MySQL提供了三大运算符

  1.     IS NULL: 此运算符返回true,当列的值是NULL。
  2.     IS NOT NULL: 运算符返回true,当列的值不是NULL。
  3.     <=> 操作符比较值(不同于=运算符)为ture,即使两个NULL值

  涉及NULL条件是特殊的。不能使用 =NULL 或 !=NULL 寻找NULL值的列。这种比较总是告诉他们是否是真正的失败,因为这是不可能的。即使是NULL=NULL失败。

如果要查找是或不是NULL的列,请使用IS NULL或IS NOT NULL。

参考文献:

  1、详解MySQL中的NULL值

  2、mysql中is not null和!=null及null介绍