SQL NULL 值学习笔记

在 SQL 中,NULL 值表示缺失或未知的数据。NULL 值不等于零或空字符串,它是一种特殊的值。

NULL 值的使用

在 SQL 中,NULL 值可以用于以下情况:

  • 表示某些数据缺失或未知。
  • 表示两个值不能相加或相乘(例如,如果一个值是NULL,则结果也是NULL)。
  • 在查询中使用 NULL 值,例如使用 IS NULL 或 IS NOT NULL。

实例

下面是一些使用 NULL 值的实例:

创建表时使用 NULL 值

假设我们有一个 products 表,其中包含以下列:

sqlCopy Code
CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(50), description VARCHAR(100), price DECIMAL(10,2), quantity_in_stock INT );

如果我们没有产品的描述,我们可以将其设置为 NULL:

sqlCopy Code
INSERT INTO products (product_id, product_name, description, price, quantity_in_stock) VALUES (1, 'Cup', NULL, 10.99, 100);

查询时使用 NULL 值

我们可以使用 IS NULL 或 IS NOT NULL 来查询包含 NULL 值的行:

sqlCopy Code
SELECT * FROM products WHERE description IS NULL;

这将返回所有描述为空的产品。

使用 NULL 值进行计算

假设我们有一个 orders 表,其中包含以下列:

sqlCopy Code
CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATETIME, total_price DECIMAL(10,2), taxes DECIMAL(10,2), shipping DECIMAL(10,2) );

如果我们有一些订单没有运费,我们可以使用 NULL 值来表示:

sqlCopy Code
INSERT INTO orders (order_id, customer_id, order_date, total_price, taxes, shipping) VALUES (1, 1001, '2023-06-05', 500.00, 50.00, NULL);

当我们将总价格、税和运费相加时,由于存在 NULL 值,结果也将是 NULL 值:

sqlCopy Code
SELECT total_price + taxes + shipping AS grand_total FROM orders WHERE order_id = 1;

这将返回 NULL。要解决此问题,我们可以使用 COALESCE 函数将NULL值转换为零:

sqlCopy Code
SELECT COALESCE(total_price, 0) + COALESCE(taxes, 0) + COALESCE(shipping, 0) AS grand_total FROM orders WHERE order_id = 1;

这将返回 550.00。

总结

NULL 是 SQL 中的一个特殊值,用于表示缺失或未知数据。我们可以在创建表、插入数据和查询数据时使用 NULL 值,并使用 IS NULL、IS NOT NULL 和 COALESCE 等函数进行处理。