Sql 简明教程

SQL - NULL Values

SQL 使用术语 NULL 来表示数据库中不存在的数据值。这些值与空字符串或零不同。它们在数据库中不占用任何空间,用于表示数据字段中不存在的值或未知的值。

导致值为 NULL 的一些常见原因 −

  1. 在数据输入期间可能未提供该值。

  2. 该值尚未知。

Creating a Table without NULL Values

由于 NULL 值与任何特定数据类型无关,因此可以将其插入表中的任何列。然而,当使用“NOT NULL”关键字定义列时,只要尝试将 NULL 值插入该特定列,就会引发错误。

Syntax

在创建表时, NOT NULL 的基本语法如下:

CREATE TABLE table-name (
   column1 datatype NOT NULL,
   column2 datatype NOT NULL,
   ...
   columnN datatype
);

此处,NOT NULL 表示列应始终接受给定数据类型的显式值。您可以在我们未使用 NOT NULL 的列中插入 NULL 值。

Example

让我们使用 CREATE 语句在 SQL 数据库中创建一个名为 CUSTOMERS 的表,如下面的查询所示:

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

让我们使用以下查询将一些值插入上述创建的表中:

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

该表已成功在数据库中创建。

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

3

Kaushik

23

Kota

2000.00

4

Chaitali

25

Mumbai

6500.00

5

Hardik

27

Bhopal

8500.00

6

Komal

22

Hyderabad

NULL

7

Muffy

24

Indore

NULL

现在,让我们使用 IS NOT NULL 运算符检索表中存在且不为 null 的记录:

SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NOT NULL;

上述查询将产生以下结果:

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

3

Kaushik

23

Kota

2000.00

4

Chaitali

25

Mumbai

6500.00

5

Hardik

27

Bhopal

8500.00

您还可以使用 SELECT 查询中的 IS NULL 运算符检索表中存在的 NULL 记录,如下所示:

SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NULL;

上述查询将产生以下结果:

ID

NAME

AGE

ADDRESS

SALARY

6

Komal

22

Hyderabad

NULL

7

Muffy

24

Indore

NULL

Updating NULL Values in a Table

您可以使用 SQL 中的 UPDATE 语句更新表中存在的 NULL 值。为此,您可以在 WHERE 子句中使用 IS NULL 运算符来筛选包含 NULL 值的行,然后使用 SET 关键字设置新值。

Example

考虑先前创建的表,并使用 UPDATE 语句更新表中存在的 NULL 值,如下所示:

UPDATE CUSTOMERS SET SALARY = 9000 WHERE SALARY IS NULL;

Output

执行以上查询后,将获取如下输出——

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

Verification

让我们使用以下查询验证表中指定的记录是否已更新:

SELECT * FROM CUSTOMERS;

执行以上查询后,输出显示如下 −

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

3

Kaushik

23

Kota

2000.00

4

Chaitali

25

Mumbai

6500.00

5

Hardik

27

Bhopal

8500.00

6

Komal

22

Hyderabad

9000.00

7

Muffy

24

Indore

9000.00

Deleting Records with NULL Values

您可以使用 DELETE FROM 语句从表中删除包含 NULL 值的记录。您首先使用 WHERE 子句中的 IS NULL 运算符检查表是否包含 NULL 值,然后删除已筛选的记录。

Example

考虑先前创建的 CUSTOMERS 表,并使用 DELETE 语句删除表中存在的 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

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

3

Kaushik

23

Kota

2000.00

4

Chaitali

25

Mumbai

6500.00

5

Hardik

27

Bhopal

8500.00