Administrator
发布于 2025-09-14 / 5 阅读
0
0

MySQL第13课:SELECT与空值运算符

1. 什么是空值(NULL)

1.1 空值的定义

  • 空值表示"未知"或"不存在"的值

  • 与0、空字符串''、False不同

  • 在数据库中具有特殊含义

1.2 空值的特点

-- 空值示例
SELECT NULL = NULL;    -- 结果为NULL,不是True
SELECT NULL != NULL;   -- 结果为NULL,不是False

2. 空值运算符详解

2.1 IS NULL 运算符

作用:检查某个值是否为空

-- 基本语法
SELECT * FROM 表名 WHERE 列名 IS NULL;
​
-- 实际示例
-- 假设有学生表 students
SELECT * FROM students WHERE 电话号码 IS NULL;

2.2 IS NOT NULL 运算符

作用:检查某个值是否不为空

-- 基本语法
SELECT * FROM 表名 WHERE 列名 IS NOT NULL;
​
-- 实际示例
SELECT * FROM students WHERE 邮箱 IS NOT NULL;

3. 实战演示

3.1 创建示例表

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50),
    salary DECIMAL(10,2),
    hire_date DATE,
    phone VARCHAR(20)
);
​
-- 插入示例数据
INSERT INTO employees VALUES
(1, '张三', '销售部', 5000.00, '2023-01-15', '13800138000'),
(2, '李四', '技术部', NULL, '2023-02-20', NULL),
(3, '王五', NULL, 4500.00, NULL, '13900139000'),
(4, '赵六', '人事部', 4800.00, '2023-04-10', NULL);

3.2 查询练习

查询1:查找薪资未知的员工

SELECT * FROM employees WHERE salary IS NULL;

查询2:查找部门已确定的员工

SELECT * FROM employees WHERE department IS NOT NULL;

查询3:查找电话号码和入职日期都完整的员工

SELECT * FROM employees 
WHERE phone IS NOT NULL AND hire_date IS NOT NULL;

4. 常见错误与注意事项

❌ 错误写法

-- 错误!不能用 = 判断NULL
SELECT * FROM employees WHERE salary = NULL;
​
-- 错误!不能用 != 判断非NULL
SELECT * FROM employees WHERE salary != NULL;

✅ 正确写法

-- 正确使用IS NULL
SELECT * FROM employees WHERE salary IS NULL;
​
-- 正确使用IS NOT NULL
SELECT * FROM employees WHERE salary IS NOT NULL;

5. 综合练习

练习1:数据完整性检查

-- 检查员工表中哪些关键信息缺失
SELECT 
    COUNT(*) as 总员工数,
    COUNT(department) as 有部门的员工数,
    COUNT(salary) as 有薪资的员工数,
    COUNT(phone) as 有电话的员工数
FROM employees;

练习2:条件组合查询

-- 查找技术部中薪资未知的员工
SELECT * FROM employees 
WHERE department = '技术部' AND salary IS NULL;
​
-- 查找所有信息完整的员工
SELECT * FROM employees 
WHERE department IS NOT NULL 
  AND salary IS NOT NULL 
  AND hire_date IS NOT NULL 
  AND phone IS NOT NULL;

🎯 本章重点总结

运算符

作用

示例

IS NULL

判断是否为空

WHERE phone IS NULL

IS NOT NULL

判断是否不为空

WHERE email IS NOT NULL

💡 重要提醒

  1. NULL ≠ 0,也≠ 空字符串

  2. 必须使用IS NULL/IS NOT NULL判断空值

  3. 空值在排序时通常显示在最前面


📝 课后作业

  1. 创建一个商品表,包含价格、库存等字段,故意插入一些空值

  2. 编写查询语句找出价格未知的商品

  3. 编写查询语句找出所有信息完整的商品

  4. 使用IFNULL函数为空的字段显示默认值


评论