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 |
+----+-----------+---------+---------+