SQL IS NULL操作符

SQL IS NULL操作符

在SQL中,” IS NULL “操作符用于检查列是否有NULL值。如果列值为NULL,则返回true,否则返回false。

具有NULL值的字段表示它没有值。可以在表中创建新记录或更新现有记录时不提供字段的值。如果这样做,该字段将保存为NULL值。

不能使用等于(=)、小于(<)或不等于(<>)等比较操作符来检查NULL值。而是使用以下操作符:

  • Is null
  • Is not null(非NULL值的否定形式)

SQL中的NULL值

SQL不允许在列的任何字段中没有值。在逻辑上,没有值的表列是空字段。实际上,具有未指定值的字段被视为NULL。当我们不输入任何内容到表格单元时,SQL假设目前还未知的值,并将其放入该字段中。

语法

下面是NULL值的语法:

SELECT column_name1, column_name2, column_name3, ... , column_nameN
FROM table_name
WHERE column_nameN = NULL

IS NULL 运算符

SQL IS NULL 是一种逻辑运算符,它可以用来从结果中过滤掉丢失数据的行。空值或者没有任何数据的单元格可能出现在一些表中。 IS NULL 允许你选择给定列中为空的行。

语法

IS NULL 的语法如下:

SELECT column_name1, column_name2, column_name3, ... , column_nameN
FROM table_name
WHERE column_nameN IS NULL

示例

让我们考虑一个名为”Fruit”的表,我们将在数据库中创建这个表,其中的字段中包含一些空值。执行以下查询以创建表。

SQL> CREATE TABLE Fruit  
(  
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   ADDRESS  CHAR (25),
   PRICE   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

现在我们将使用下面的查询来填充上面创建的表格。

SQL> INSERT INTO Fruit (ID,NAME,ADDRESS,PRICE)
VALUES (1, 'Apple', 'Shimla', 2000.00 );

INSERT INTO Fruit (ID,NAME,ADDRESS,PRICE)
VALUES (2, 'Mango',NULL, 3000.00 );

INSERT INTO Fruit (ID,NAME,ADDRESS,PRICE)
VALUES (3, 'Orange',NULL, 4000.00 );

INSERT INTO Fruit (ID,NAME,ADDRESS,PRICE)
VALUES (4, 'Banana', 'AP',NULL);

INSERT INTO Fruit (ID,NAME,ADDRESS,PRICE)
VALUES (5, 'JackFruit', 'Ooty',NULL);

验证

为了检查表是否已创建,请执行以下查询。

SQL> SELECT * FROM Fruit;

执行之后,将显示如下表格-

+----+-----------+---------+---------+
| ID | NAME      | ADDRESS | PRICE   |
+----+-----------+---------+---------+
|  1 | Apple     | Shimla  | 2000.00 |
|  2 | Mango     | NULL    | 3000.00 |
|  3 | Orange    | NULL    | 4000.00 |
|  4 | Banana    | AP      |    NULL |
|  5 | JackFruit | Ooty    |    NULL |
+----+-----------+---------+---------+

使用SELECT语句的IS NULL条件

我们可以使用IS NULL运算符与SELECT语句一起使用,根据某个列是否包含NULL值来过滤行。

示例

在下面的查询中,我们将展示如何使用IS NULL条件选择如果指定字段为NULL的行。

SQL> SELECT *
FROM Fruit
WHERE ADDRESS IS NULL;

输出

在执行上述查询时,将生成如下所示的输出-

+----+--------+---------+---------+
| ID | NAME   | ADDRESS | PRICE   |
+----+--------+---------+---------+
|  2 | Mango  | NULL    | 3000.00 |
|  3 | Orange | NULL    | 4000.00 |
+----+--------+---------+---------+

IS NULL和COUNT()函数

我们还可以在SQL中使用IS NULL运算符和COUNT()函数来计算特定列中包含NULL值的行数。这个函数与SQL SELECT命令一起使用。

语法

COUNT()函数的语法如下:

SELECT COUNT(column_name)
FROM table_name
WHERE condition;

示例

以下查询确定在 Price 列中有空字段(NULL)的行数。

SQL> SELECT COUNT(*)
FROM Fruit
WHERE PRICE IS NULL;

输出

执行以上查询时,将生成如下输出:

+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+

IS NULL与UPDATE语句

在SQL中,我们可以使用UPDATE语句和”IS NULL”运算符将满足特定条件的所有行的列值设置为NULL。

示例

考虑我们数据库中的以下表”fruit”,运行以下查询以查看如何使用更新语句。

SQL> UPDATE Fruit
SET PRICE= 1000
WHERE PRICE IS NULL;

验证

为了检查表是否已经更新,请执行下面的查询。

SQL> SELECT * FROM Fruit;

执行上述查询时,将生成如下所示的输出结果-

+----+-----------+---------+---------+
| ID | NAME      | ADDRESS | PRICE   |
+----+-----------+---------+---------+
|  1 | Apple     | Shimla  | 2000.00 |
|  2 | Mango     | NULL    | 3000.00 |
|  3 | Orange    | NULL    | 4000.00 |
|  4 | Banana    | AP      | 1000.00 |
|  5 | JackFruit | Ooty    | 1000.00 |
+----+-----------+---------+---------+

SQL中使用DELETE语句的IS NULL

我们也可以使用DELETE语句和IS NULL运算符来删除特定列中包含NULL值的所有行。

示例

执行下面的查询以观察我们将如何使用带有is null的删除语句。

SQL> DELETE FROM Fruit
WHERE ADDRESS IS NULL;

验证

执行下面的查询来检查表是否已经发生了变化。

SQL> SELECT * FROM Fruit;

在执行上述查询时,将生成如下所示的输出结果:

+----+-----------+---------+---------+
| ID | NAME      | ADDRESS | PRICE   |
+----+-----------+---------+---------+
|  1 | Apple     | Shimla  | 2000.00 |
|  4 | Banana    | AP      | 1000.00 |
|  5 | JackFruit | Ooty    | 1000.00 |
+----+-----------+---------+---------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程