SQL 基础 / 6 min
NULL:它不是 0,也不是空字符串
NULL 表示未知或缺失,判断和统计时都要单独处理。
NULLIS NULLcount
NULL 表示缺失
NULL 不是 0,也不是空字符串,而是“没有值”或“未知”。
判断 NULL 不能用 =:
-- 错
WHERE city = NULL
-- 对
WHERE city IS NULL
count(*) 和 count(列)
SELECT count(*) AS rows_count,
count(city) AS city_count
FROM customers;
count(*) 数行数,count(city) 只数 city 不是 NULL 的行。练习场的 customers 表里每位客户都填了城市,所以这里两个数相同;一旦某列有缺失,两者就会分开。
LEFT JOIN 后特别容易遇到 NULL
当你保留左表对象,但右表没有匹配记录时,右表列会变成 NULL。
SELECT c.name, count(o.id) AS order_count
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.name;
这里用 count(o.id) 才能正确得到 0 单客户。
自查
- 判断缺失值:
IS NULL/IS NOT NULL - 统计行数:
count(*) - 统计某列有值的数量:
count(column)