SQL NULL 值学习笔记
在 SQL 中,NULL 值表示缺失或未知的数据。NULL 值不等于零或空字符串,它是一种特殊的值。
NULL 值的使用
在 SQL 中,NULL 值可以用于以下情况:
- 表示某些数据缺失或未知。
- 表示两个值不能相加或相乘(例如,如果一个值是NULL,则结果也是NULL)。
- 在查询中使用 NULL 值,例如使用 IS NULL 或 IS NOT NULL。
实例
下面是一些使用 NULL 值的实例:
创建表时使用 NULL 值
假设我们有一个 products 表,其中包含以下列:
sqlCopy CodeCREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(50),
description VARCHAR(100),
price DECIMAL(10,2),
quantity_in_stock INT
);
如果我们没有产品的描述,我们可以将其设置为 NULL:
sqlCopy CodeINSERT 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 CodeSELECT * FROM products WHERE description IS NULL;
这将返回所有描述为空的产品。
使用 NULL 值进行计算
假设我们有一个 orders 表,其中包含以下列:
sqlCopy CodeCREATE 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 CodeINSERT 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 CodeSELECT total_price + taxes + shipping AS grand_total FROM orders WHERE order_id = 1;
这将返回 NULL。要解决此问题,我们可以使用 COALESCE 函数将NULL值转换为零:
sqlCopy CodeSELECT 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 等函数进行处理。