Sql 简明教程

SQL - IS NULL

假设一个数据表的一些字段存在 NULL 值。这些字段表明其中没有值。SQL 允许用户创建新的记录或修改现有记录,而无需指定字段的值。如果未提供值,该字段将存储为 NULL 值。

在 SQL 中,不可能使用比较运算符(如 =、< 或 <>)检查 NULL 值。相反,我们使用 IS NULL 和 IS NOT NULL(NULL 值的否定)运算符。

The SQL IS NULL Operator

SQL IS NULL 运算符用于检查列中的值是否为 NULL。如果列值为 NULL,则返回 true;否则返回 false。

NULL 是表示缺失或未知数据的值,IS NULL 运算符允许我们筛选在特定列中包含 NULL 值的记录。

Syntax

以下是 IS NULL 运算符的语法 −

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

Example

首先,让我们使用以下查询创建一个名为 CUSTOMERS 的表 −

CREATE TABLE CUSTOMERS(
 ID INT NOT NULL,
 NAME VARCHAR(20),
 AGE INT,
 ADDRESS CHAR(25),
 SALARY DECIMAL(18, 2),
 PRIMARY KEY(ID)
);

现在,使用如下所示的 INSERT 语句向此表中插入值:

INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', NULL ),
(2, 'Khilan', 25, NULL, 1500.00 ),
(3, 'Kaushik', NULL, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', NULL ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', NULL, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, NULL, 10000.00 );

该表将按如下方式创建:

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

NULL

2

Khilan

25

NULL

1500.00

3

Kaushik

NULL

Kota

2000.00

4

Chaitali

25

Mumbai

NULL

5

Hardik

27

Bhopal

8500.00

6

Komal

NULL

Hyderabad

4500.00

7

Muffy

24

NULL

10000.00

IS NULL with SELECT Statement

我们可以将 IS NULL 运算符与 SELECT 语句一起使用,以筛选具有 NULL 值的记录。

Example

在以下查询中,我们正在从 ADDRESS 为 null 的 CUSTOMERS 表中检索所有记录 −

SELECT * FROM CUSTOMERS WHERE ADDRESS IS NULL;

Output

在执行以上查询时,它将生成如下所示的输出 −

ID

NAME

AGE

ADDRESS

SALARY

2

Khilan

25

NULL

1500.00

7

Muffy

24

NULL

10000.00

IS NULL with COUNT() Function

我们还可以将 IS NULL 运算符与 SQL 中的 COUNT() 函数一起使用,以计算特定列中具有 NULL 值的记录数。

Syntax

以下是 IS NULL 运算符与 COUNT() 函数的语法 −

SELECT COUNT(column_name)
FROM table_name
WHERE condition IS NULL;

Example

以下查询返回 CUSTOMERS 表的 SALARY 列中有空白字段(NULL)的记录数 −

SELECT COUNT(*) FROM CUSTOMERS WHERE SALARY IS NULL;

Output

下面显示了产生的输出:

COUNT(*)

2

IS NULL with UPDATE Statement

我们可以在 SQL 中使用 UPDATE 语句和“IS NULL”运算符,以更新特定列中具有 NULL 值的记录。

Syntax

以下是 SQL 中 IS NULL 运算符与 UPDATE 语句的语法 −

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE columnname1, columnname2, ... IS NULL;

Example

在以下查询中,我们将 AGE 列的空白(NULL)记录更新为 48 −

UPDATE CUSTOMERS SET AGE = 48 WHERE AGE IS NULL;

Output

执行上面程序时,将获得如下所示的输出:

Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0

Verification

要检查表是否已更新,请执行下面的 SELECT 查询:

SELECT * FROM CUSTOMERS;

该表显示如下:

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

NULL

2

Khilan

25

NULL

1500.00

3

Kaushik

48

Kota

2000.00

4

Chaitali

25

Mumbai

NULL

5

Hardik

27

Bhopal

8500.00

6

Komal

48

Hyderabad

4500.00

7

Muffy

24

NULL

10000.00

IS NULL with DELETE Statement

我们还可以将 DELETE 语句与 IS NULL 运算符一起使用,以删除特定列中具有 NULL 值的记录。

Syntax

以下是 SQL 中 IS NULL 运算符与 DELETE 语句的语法 −

DELETE FROM table_name
WHERE columnname1, columnname2, ... IS NULL;

Example

在以下查询中,我们删除 CUSTOMERS 表的 SALARY 列中存在的空白(NULL)记录 −

DELETE FROM CUSTOMERS WHERE SALARY IS NULL;

Output

我们获得以下结果 −

Query OK, 2 rows affected (0.01 sec)

Verification

执行下面给出的 SELECT 查询,以检查表是否已更改 −

SELECT * FROM CUSTOMERS;

如果我们编译并运行该程序,结果如下所示 −

ID

NAME

AGE

ADDRESS

SALARY

2

Khilan

25

NULL

1500.00

3

Kaushik

NULL

Kota

2000.00

5

Hardik

27

Bhopal

8500.00

6

Komal

NULL

Hyderabad

4500.00

7

Muffy

24

NULL

10000.00