什么是MySQL中的 "IS NULL "查询?

100 阅读3分钟

在MySQL数据库中的 "IS NULL "查询显示了缺少或不为DMS所知的数据。NULL值是不同的,因为它没有价值,它既不等于零整数,也不等于空集。 NULL是一种状态,而不是一个值,如果我们将NULL值与其他任何NULL值进行比较,其结果总是NULL,因为它本身就是未知的。"IS NULL "查询是在数据缺失或未知的情况下使用的,例如,我们做一个电话目录列表,如果任何一个人的电话号码是未知的,那么 "IS NULL "将提取它,随后可以添加这个号码来完成目录。

在这篇文章中,我们将通过一些例子来了解什么是 "IS NULL "查询以及它是如何工作的。

什么是IS NULL查询

IS NULL查询是用来获取表中未知或缺失的数据的,当我们创建一个表时,我们必须通过 "NULL查询 "告知该表是否接受NULL值,或者通过 "NOT NULL "告知该表是否接受NULL值。如果我们选择约束条件 "NOT NULL",那么它将不接受NULL值,例如,我们创建一个电话簿表,其中有 "姓名"、"电话号码 "和 "电子邮件 "列,我们选择姓名为NULL,电话号码为 "非NULL"。

CREATE TABLE phone_directory_1 (name VARCHAR(50) NULL, phone_number INT(50)  NOT NULL, email VARCHAR(50));

现在我们将插入值,并将Name和Phone_number的值留空。

INSERT INTO phone_directory_1 VALUE (null,null,‘abc@gmail.com’);

我们可以看到,它在列 "Phone_number "中产生了不接受NULL值的错误,因为它被初始化为 "NOT NULL "值。现在创建另一个值为 "NULL "的表。

CREATE TABLE phone_directory_2 (name VARCHAR(50) NULL, phone_number INT(50)  NULL, email VARCHAR(50));

再次插入数据,如 "name "和 "phone_number "中的空值以及 "email "中的一些值。

INSERT INTO phone_directory_2 VALUE ( Null,Null,‘abc@gmail.com’);

要查看该表。

SELECT * FROM phone_directory_2;

在表中再增加一个条目。

INSERT INTO phone_directory_2 VALUE (‘John’,12345,‘abc@gmail.com’);

再次查看修改后的表。

SELECT * FROM phone_directory_2;

现在我们将通过使用 "IS NULL "子句从表中提取空值,但在使用之前,我们将讨论使用 "IS NULL "子句的一般语法。

SELECT column1,column2,...   FROM [table_name] WHERE column IS NULL;

按照一般的语法,我们可以通过执行命令从Name列中获取NULL值。

SELECT name, phone_number,email FROM Phone_directory_new WHERE Name IS NULL;

从输出结果中,我们可以看到 "name "为Null的那一列的值已经被提取出来了。为了更清楚地了解它,我们编辑一个新条目,其中只有 "Phone_number "列是空的。

INSERT INTO phone_directory_2 VALUE (‘Alex’,Null,‘abc@gmail.com’);

要查看列。

SELECT * FROM phone_directory_2;

我们将使用 "IS NULL "子句从phone_number列中提取所有的NULL值。

SELECT name, phone_number,email FROM phone_directory_2 WHERE phone_number IS NULL;

它显示了列 "Phone_number "的所有空值。从上面的例子可以看出,"IS NULL "子句是用来从表中的列中提取空值的。

结论

有时候,用户错误地留下了条目,这被认为是NULL值。为了提取这些空值并重新编辑它们,我们使用 "IS NULL "子句。在这篇文章中,我们讨论了使用NULL或NOT NULL子句创建表的区别,也解释了什么是 "IS NULL "查询,以及我们如何使用它从表的列中提取空值。