问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MySQL IS NULL 和 IS NOT NULL 教程及示例

创作时间:
作者:
@小白创作中心

MySQL IS NULL 和 IS NOT NULL 教程及示例

引用
1
来源
1.
https://www.guru99.com/zh-CN/null.html

在 SQL 中,NULL 既是值,也是关键字。让我们首先研究一下 NULL 值 –

NULL 作为值

简单来说,NULL 只是不存在的数据的占位符。在对表进行插入操作时,有时会出现某些字段值不可用的情况。

为了满足真正的关系数据库管理系统的要求, MySQL 使用 NULL 作为未提交值的占位符。下面的屏幕截图显示了 NULL 值在数据库中的样子。

在进一步讨论之前,让我们先了解一下 NULL 的一些基础知识。

  • NULL 不是数据类型 – 这意味着它不被识别为“int”、“date”或任何其他定义的数据类型。

  • 算术运算 涉及 时刻 返回 NULL 例如,69 + NULL = NULL。

  • All / 全部 聚合函数 仅影响没有 NULL 值的行 .

现在让我们演示一下 count 函数如何处理空值。让我们看看成员表的当前内容 -

SELECT * FROM `members`;

执行上述脚本将得到以下结果

membership_number
full_names
gender
date_of_birth
physical_address
postal_address
contact_number
email
1
Janet Jones
Female
21-07-1980
First Street Plot No 4
Private Bag
0759 253 542
janetjones@yagoo.cm
2
Janet Smith Jones
Female
23-06-1980
Melrose 123
NULL
NULL
jj@fstreet.com
3
Robert Phil
Male
12-07-1989
3rd Street 34
NULL
12345
rm@tstreet.com
4
Gloria Williams
Female
14-02-1984
2nd Street 23
NULL
NULL
NULL
5
Leonard Hofstadter
Male
NULL
Woodcrest
NULL
845738767
NULL
6
Sheldon Cooper
Male
NULL
Woodcrest
NULL
976736763
NULL
7
Rajesh Koothrappali
Male
NULL
Woodcrest
NULL
938867763
NULL
8
Leslie Winkle
Male
14-02-1984
Woodcrest
NULL
987636553
NULL
9
Howard Wolowitz
Male
24-08-1981
SouthPark
P.O. Box 4563
987786553
lwolowitz[at]email.me

让我们统计一下所有更新了 contact_number 的会员

SELECT COUNT(contact_number) FROM `members`;

执行上述查询将得到以下结果。

注意:NULL 值未包括在内

什么不是?

NOT 逻辑运算符用于测试布尔条件,如果条件为假,则返回 true。如果测试的条件为真,则 NOT 运算符返回 false

Condition
NOT Opera结果

为什么要使用NOT null?

在某些情况下,我们必须对查询结果集执行计算并返回值。对具有 NULL 值的列执行任何算术运算都会返回空结果。为了避免这种情况发生,我们可以使用 NOT NULL 子句来限制我们的数据操作的结果。

NOT NULL 值

假设我们想创建一个表,其中某些字段在表中插入新行时应始终提供值。我们可以在创建表时对给定字段使用 NOT NULL 子句。

下面的示例创建了一个包含员工数据的新表。应始终提供员工编号

CREATE TABLE `employees`(
  employee_number int NOT NULL,
  full_names varchar(255) ,
  gender varchar(6)
);

现在让我们尝试插入一条新记录而不指定员工姓名,看看会发生什么。

INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');

在以下位置执行上述脚本 MySQL 工作台出现以下错误-

NULL 关键字

当对包含 NULL 的值执行布尔运算时,NULL 也可以用作关键字。为此目的,“IS/NOT”关键字与 NULL 字一起使用。将 null 用作关键字时的基本语法如下

`comlumn_name'  IS NULL
`comlumn_name' NOT NULL
  • “一片空白 是执行布尔比较的关键字。如果提供的值为 NULL,则返回 true;如果提供的值不为 NULL,则返回 false。

  • “非空” 是执行布尔比较的关键字。如果提供的值不为 NULL,则返回 true;如果提供的值是 null,则返回 false。

现在让我们看一个实际的例子,使用NOT NULL关键字来消除所有具有空值的列值。

继续上面的例子,假设我们需要联系电话不为空的会员的详细信息。我们可以执行如下查询

SELECT * FROM `members` WHERE contact_number IS NOT NULL;

执行上述查询只会给出联系电话不为空的记录。

假设我们想要联系号码为空的会员记录。我们可以使用以下查询

SELECT * FROM `members` WHERE contact_number IS NULL;

执行上述查询将返回联系号码为 NULL 的会员详细信息

membership_number
full_names
gender
date_of_birth
physical_address
postal_address
contact_number
email
1
Janet Jones
Female
21-07-1980
First Street Plot No 4
Private Bag
0759 253 542
janetjones@yagoo.cm
3
Robert Phil
Male
12-07-1989
3rd Street 34
NULL
12345
rm@tstreet.com
5
Leonard Hofstadter
Male
NULL
Woodcrest
NULL
845738767
NULL
6
Sheldon Cooper
Male
NULL
Woodcrest
NULL
976736763
NULL
7
Rajesh Koothrappali
Male
NULL
Woodcrest
NULL
938867763
NULL
8
Leslie Winkle
Male
14-02-1984
Woodcrest
NULL
987636553
NULL
9
Howard Wolowitz
Male
24-08-1981
SouthPark
P.O. Box 4563
987786553
lwolowitz[at]email.me

比较空值

三值逻辑 – 对涉及 NULL 的条件执行布尔运算可以返回 “未知”、“真”或“假”。

例如, 使用“IS NULL”关键字 进行比较运算时 涉及 NULL 可以返回 true or false . 使用其他比较运算符返回 “未知”(NULL)。

假设你将数字 5 与 XNUMX 进行比较

SELECT 5 =5;

查询结果为1,表示TRUE

让我们用 NULL 做同样的操作

让我们看另一个例子

查询结果为 0,表示 FALSE

让我们看一下使用 NULL 的相同示例

让我们使用 IS NULL 关键字

查询结果为 0,即 FALSE

SELECT NULL IS NULL;

查询结果为 1,即 TRUE

总结

  • NULL 是可选表字段的值占位符。

  • MySQL 将 NULL 值与其他数据类型区别对待。NULL 值在条件中使用时,计算结果为假布尔值。

  • NOT 逻辑运算用于测试布尔值,如果布尔值为假,则计算结果为真,如果布尔值为真,则计算结果为假。

  • NOT NULL 子句用于从结果集中消除 NULL 值

  • 对 NULL 值执行算术运算总是返回 NULL 结果。

  • 不能使用 [、= 等比较运算符来比较 NULL 值。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号