SQL IS NOT NULL查询
在SQL中, IS NOT NULL 查询用于获取包含非空值的所有行。
在关系数据库模型的背景下,NULL值表示未知值。如果我们从理论上考虑,NULL值仍然指向一个未知的值,但这个未知的值不等于零值或包含空字段的字段。
SQL中的空值
SQL中的 NULL 是表示缺失值的术语。表中的NULL值是一个看起来为空白的字段值。
具有NULL值的字段是一个没有值的字段。很重要的一点是要理解NULL值与零值或包含空格的字段是不同的。对于检查空值,我们可以使用两个基本运算符:
- IS NULL
- IS NOT NULL
在SQL中使用IS NOT NULL
使用 IS NOT NULL 运算符可以获取包含非空值的列中的行。当使用时,如果列包含非空值或者位于IS NOT NULL之前的表达式不为空,则条件成立。
语法
以下是IS NOT NULL的语法:
SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
示例
让我们考虑一个名为“Car”的表,我们将在数据库中创建并且其中包含一些字段中的空值。执行以下查询来创建一个表
SQL> CREATE TABLE Car (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
OWNER CHAR (25),
PRICE DECIMAL (18, 2) NOT NULL,
PRIMARY KEY (ID)
);
现在我们将使用以下查询来填充上面创建的表格。
SQL> INSERT INTO Car (ID,NAME,OWNER,PRICE)
VALUES (1, 'Bmw', 'SRK', 2000.00 );
INSERT INTO Car (ID,NAME,OWNER,PRICE)
VALUES (2, 'Audi', 'RAM', 3000.00 );
INSERT INTO Car (ID,NAME,OWNER,PRICE)
VALUES (3, 'RX100', NULL, 4000.00 );
INSERT INTO Car (ID,NAME,OWNER,PRICE)
VALUES (4, 'Benz', NULL, 5000.00 );
验证
要检查表是否已经创建,请执行下面的查询。
SQL> SELECT * FROM Car;
执行此代码后,会显示如下所示的表格:
+----+-------+-------+---------+
| ID | NAME | OWNER | PRICE |
+----+-------+-------+---------+
| 1 | Bmw | SRK | 2000.00 |
| 2 | Audi | RAM | 3000.00 |
| 3 | RX100 | NULL | 4000.00 |
| 4 | Benz | NULL | 5000.00 |
+----+-------+-------+---------+
使用SELECT语句的IS NOT NULL
我们可以使用IS NOT NULL运算符和SELECT语句来根据某个列是否包含非NULL值来筛选行。
示例
在以下示例中,我们将展示如何使用IS NOT NULL条件来选择具有非NULL值的行。
SQL> SELECT *
FROM Car
WHERE OWNER IS NOT NULL;
输出
执行以上查询后,将生成以下输出 –
+----+------+-------+---------+
| ID | NAME | OWNER | PRICE |
+----+------+-------+---------+
| 1 | Bmw | SRK | 2000.00 |
| 2 | Audi | RAM | 3000.00 |
+----+------+-------+---------+
IS NOT NULL与COUNT()函数
我们还可以在SQL中使用IS NOT NULL运算符和COUNT()函数来计算特定列中不包含NULL值的行数。这个函数与SQL SELECT命令一起使用。
语法
COUNT()函数的语法如下:
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
示例
为了确定有多少行具有非空值,使用COUNT()方法和IS NOT NULL。执行下面显示的以下查询:
SQL> SELECT COUNT(*)
FROM CAR
WHERE OWNER IS NOT NULL;
输出
执行上述查询后,将生成以下输出结果 −
+----------+
| COUNT(*) |
+----------+
| 2 |
+----------+
IS NOT NULL与DELETE语句
我们还可以使用IS NOT NULL运算符与DELETE语句一起删除特定列中不包含NULL值的所有行。
示例
在以下示例中,我们将使用IS NOT NULL运算符和DELETE语句来删除包含非NULL值的行。执行下面的查询来删除非NULL值。
SQL> DELETE FROM Car
WHERE OWNER IS NOT NULL;
验证
检查表中非空值是否被删除,执行以下查询:
SQL> SELECT * FROM Car;
在执行上述查询时,将会生成如下输出-
+----+-------+-------+---------+
| ID | NAME | OWNER | PRICE |
+----+-------+-------+---------+
| 3 | RX100 | NULL | 4000.00 |
| 4 | Benz | NULL | 5000.00 |
+----+-------+-------+---------+
使用UPDATE语句的IS NOT NULL
我们可以在SQL中使用UPDATE语句和”IS NOT NULL”运算符来更新包含特定列中非空值的所有行的列值。
示例
在这种情况下,我们将检查如何在更新语句中使用”is not null”。考虑我们数据库中的以下表”Car”并运行以下查询以查看如何使用更新语句。
SQL> UPDATE Car
SET OWNER = 'DHRUVA'
WHERE OWNER IS NOT NULL;
验证
运行以下查询以验证表是否已更新-
SQL> SELECT * FROM Car;
在执行上述查询时,它将生成如下所示的输出:
+----+-------+--------+---------+
| ID | NAME | OWNER | PRICE |
+----+-------+--------+---------+
| 1 | Bmw | DHRUVA | 2000.00 |
| 2 | Audi | DHRUVA | 3000.00 |
| 3 | RX100 | NULL | 4000.00 |
| 4 | Benz | NULL | 5000.00 |
+----+-------+--------+---------+