SQL NULL值
在SQL中,术语 NULL 用于指定数据库中不存在的数据值。它与空字符串或零值不同,表示值不存在或数据字段的未知值。
有些常见的值为NULL的原因可能包括:
- 在输入数据时没有提供该值。
-
该值尚未知。
重要的是要理解,您不能使用=
、<
或>
等比较运算符与NULL值。这是因为NULL值是未知的,可以表示任何值。相反,您必须使用“IS NULL”或“IS NOT NULL”运算符来检查一个值是否为NULL。
语法
创建表时, NULL 的基本语法。
SQL> 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)
);
在这里, NOT NULL 表示该列应始终接受给定数据类型的显式值。我们有两个列没有使用 NOT NULL,这意味着这些列可以是 NULL。
具有 NULL 值的字段是在记录创建期间被留空的字段。
示例
让我们使用 CREATE 语句在 SQL 数据库中创建一个名为 CUSTOMERS 的表,如下所示的查询语句:
SQL> 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)
);
让我们使用以下查询将一些值插入到上面创建的表中 –
SQL> INSERT INTO CUSTOMERS (ID, NAME, AGE, ADDRESS, SALARY) VALUES(1, 'Ramesh', '32', 'Ahmedabad', 2000);
INSERT INTO CUSTOMERS (ID, NAME, AGE, ADDRESS, SALARY) VALUES(2, 'Khilan', '25', 'Delhi', 1500);
INSERT INTO CUSTOMERS (ID, NAME, AGE, ADDRESS, SALARY) VALUES(3, 'kaushik', '23', 'Kota', 2000);
INSERT INTO CUSTOMERS (ID, NAME, AGE, ADDRESS, SALARY) VALUES(4, 'Chaitali', '25', 'Mumbai', 6500);
INSERT INTO CUSTOMERS (ID, NAME, AGE, ADDRESS, SALARY) VALUES(5, 'Hardik','27', 'Bhopal', 8500);
INSERT INTO CUSTOMERS (ID, NAME, AGE, ADDRESS, SALARY) VALUES(6, 'Komal', '22', 'MP', NULL);
INSERT INTO CUSTOMERS (ID, NAME, AGE, ADDRESS, SALARY) VALUES(7, 'Muffy', '24', 'Indore', NULL);
要验证表 CUSTOMERS 是否已创建,请使用以下查询 –
SQL> 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 | MP | |
| 7 | Muffy | 24 | Indore | |
+----+----------+-----+-----------+----------+
IS NOT NULL 查询
现在,让我们尝试使用 IS NOT NULL 运算符检索表中的非空记录。
SQL> 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 |
+----+----------+-----+-----------+----------+
IS NULL 查询
让我们尝试使用 IS NULL 运算符来检索表中为空的记录-
SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NULL;
输出
上述查询将产生以下结果 –
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 6 | Komal | 22 | MP | NULL |
| 7 | Muffy | 24 | Indore | NULL |
+----+----------+-----+-----------+----------+
更新表中的 NULL 值
您可以使用 SQL 中的 UPDATE 语句更新表中存在的 NULL 值。为此,您可以在 WHERE 子句中使用 IS NULL 运算符选择具有 NULL 值的行,然后使用 SET 关键字设置新值。
示例
假设之前已经创建了一个表,并且让我们尝试使用 UPDATE 语句更新表中的 NULL 值,如下所示:
SQL> UPDATE CUSTOMERS SET SALARY = 9000 WHERE SALARY IS NULL;
输出
当您执行以上查询时,输出结果如下:
Commands completed successfully.
验证
让我们尝试使用以下查询来验证表中指定的记录是否已更新:
SQL> 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 | MP | 9000.00 |
| 7 | Muffy | 24 | Indore | 9000.00 |
+----+----------+-----+-----------+----------+