MySQL IS NULL 和 IS NOT NULL 教程及示例
MySQL IS NULL 和 IS NOT NULL 教程及示例
在 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 值。