Sql 简明教程
SQL - NULL Values
SQL 使用术语 NULL 来表示数据库中不存在的数据值。这些值与空字符串或零不同。它们在数据库中不占用任何空间,用于表示数据字段中不存在的值或未知的值。
导致值为 NULL 的一些常见原因 −
-
在数据输入期间可能未提供该值。
-
该值尚未知。
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;