1. 什么是关系运算符
1.1 关系运算符的概念
关系运算符用于比较两个值之间的关系
也称为比较运算符
返回布尔值(TRUE/FALSE),用于条件判断
1.2 关系运算符的作用
数据筛选和过滤
条件查询
数据验证
排序和分组依据
2. 常用的关系运算符
3. 创建示例数据
3.1 学生信息表
-- 创建学生表
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender VARCHAR(10),
class VARCHAR(20),
math_score INT,
english_score INT,
chinese_score INT,
total_score INT,
is_active BOOLEAN
);
-- 插入示例数据
INSERT INTO students VALUES
(1, '张三', 18, '男', '计算机1班', 85, 78, 92, 255, TRUE),
(2, '李四', 17, '女', '计算机2班', 92, 88, 76, 256, TRUE),
(3, '王五', 19, '男', '计算机1班', 78, 65, 82, 225, FALSE),
(4, '赵六', 18, '女', '计算机2班', 95, 92, 88, 275, TRUE),
(5, '孙七', 17, '男', '计算机1班', 68, 72, 65, 205, TRUE),
(6, '周八', 19, '女', '计算机2班', 88, 85, 90, 263, FALSE);
3.2 商品信息表
-- 创建商品表
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(100),
category VARCHAR(50),
price DECIMAL(10,2),
stock_quantity INT,
create_date DATE
);
-- 插入示例数据
INSERT INTO products VALUES
(1, 'iPhone 14', '手机', 5999.00, 50, '2023-01-15'),
(2, '华为Mate 50', '手机', 4999.00, 30, '2023-02-20'),
(3, '小米手环', '智能设备', 199.00, 100, '2023-03-10'),
(4, '联想笔记本', '电脑', 4599.00, 20, '2023-01-25'),
(5, '保温杯', '日用品', 89.00, 200, '2023-04-05'),
(6, '机械键盘', '电脑外设', 299.00, 80, '2023-03-28');
4. 等于运算符 (=)
4.1 基本语法
SELECT * FROM 表名 WHERE 列名 = 值;
4.2 使用示例
示例1:查询年龄等于18岁的学生
SELECT * FROM students WHERE age = 18;
示例2:查询计算机1班的学生
SELECT * FROM students WHERE class = '计算机1班';
示例3:查询活跃状态的学生
SELECT * FROM students WHERE is_active = TRUE;
示例4:查询特定价格的产品
SELECT * FROM products WHERE price = 5999.00;
5. 不等于运算符 (!= 或 <>)
5.1 基本语法
SELECT * FROM 表名 WHERE 列名 != 值;
-- 或者
SELECT * FROM 表名 WHERE 列名 <> 值;
5.2 使用示例
示例1:查询不是计算机1班的学生
SELECT * FROM students WHERE class != '计算机1班';
-- 等价于
SELECT * FROM students WHERE class <> '计算机1班';
示例2:查询性别不是男生的学生
SELECT * FROM students WHERE gender != '男';
示例3:查询价格不是199元的商品
SELECT * FROM products WHERE price != 199.00;
示例4:查询非活跃状态的学生
SELECT * FROM students WHERE is_active != TRUE;
6. 大于和小于运算符 (>, <)
6.1 基本语法
-- 大于
SELECT * FROM 表名 WHERE 列名 > 值;
-- 小于
SELECT * FROM 表名 WHERE 列名 < 值;
6.2 使用示例
示例1:查询数学成绩大于80分的学生
SELECT * FROM students WHERE math_score > 80;
示例2:查询年龄小于18岁的学生
SELECT * FROM students WHERE age < 18;
示例3:查询价格大于1000元的商品
SELECT * FROM products WHERE price > 1000;
示例4:查询库存小于50的商品
SELECT * FROM products WHERE stock_quantity < 50;
7. 大于等于和小于等于运算符 (>=, <=)
7.1 基本语法
-- 大于等于
SELECT * FROM 表名 WHERE 列名 >= 值;
-- 小于等于
SELECT * FROM 表名 WHERE 列名 <= 值;
7.2 使用示例
示例1:查询年龄大于等于18岁的学生
SELECT * FROM students WHERE age >= 18;
示例2:查询总分小于等于250分的学生
SELECT * FROM students WHERE total_score <= 250;
示例3:查询价格在100-500元之间的商品
SELECT * FROM products WHERE price >= 100 AND price <= 500;
示例4:查询3月份及之后创建的商品
SELECT * FROM products WHERE create_date >= '2023-03-01';
8. 综合实战练习
8.1 学生成绩分析
练习1:查询成绩优秀的学生(单科成绩>=85)
SELECT * FROM students
WHERE math_score >= 85 OR english_score >= 85 OR chinese_score >= 85;
练习2:查询需要补考的学生(单科成绩<60)
SELECT * FROM students
WHERE math_score < 60 OR english_score < 60 OR chinese_score < 60;
练习3:查询中等成绩的学生(总分在230-270之间)
SELECT * FROM students
WHERE total_score >= 230 AND total_score <= 270;
8.2 商品库存管理
练习4:查询需要补货的商品(库存<30)
SELECT * FROM products WHERE stock_quantity < 30;
练习5:查询高价商品(价格>3000)
SELECT * FROM products WHERE price > 3000;
练习6:查询第一季度创建的商品
SELECT * FROM products
WHERE create_date >= '2023-01-01' AND create_date <= '2023-03-31';
9. 关系运算符组合使用
9.1 多条件组合查询
示例1:查询18岁的女生
SELECT * FROM students
WHERE age = 18 AND gender = '女';
示例2:查询手机类且价格大于3000的商品
SELECT * FROM products
WHERE category = '手机' AND price > 3000;
示例3:查询计算机1班中数学成绩优秀的学生
SELECT * FROM students
WHERE class = '计算机1班' AND math_score >= 85;
9.2 复杂条件组合
示例4:查询年龄在17-19岁之间,且总分大于250的活跃学生
SELECT * FROM students
WHERE age >= 17 AND age <= 19
AND total_score > 250
AND is_active = TRUE;
示例5:查询非手机类商品,且价格在100-1000元之间,库存充足
SELECT * FROM products
WHERE category != '手机'
AND price >= 100 AND price <= 1000
AND stock_quantity > 50;
10. 常见错误与注意事项
❌ 常见错误
-- 错误:比较字符串时忘记引号
SELECT * FROM students WHERE class = 计算机1班;
-- 错误:日期格式不正确
SELECT * FROM products WHERE create_date > 2023-01-01;
-- 错误:混淆=和==
SELECT * FROM students WHERE class == '计算机1班';
✅ 正确写法
-- 正确:字符串用引号括起来
SELECT * FROM students WHERE class = '计算机1班';
-- 正确:日期用引号括起来
SELECT * FROM products WHERE create_date > '2023-01-01';
-- 正确:MySQL使用=进行比较
SELECT * FROM students WHERE class = '计算机1班';
⚠️ 重要注意事项
字符串比较要区分大小写(取决于数据库配置)
NULL值比较要使用IS NULL或IS NOT NULL
日期比较要确保格式正确
数值比较要注意数据类型匹配
11. 数据类型对比较的影响
11.1 字符串比较
-- 字符串按字典序比较
SELECT * FROM students WHERE name > '李四'; -- 名字在'李四'之后的学生
11.2 日期比较
-- 日期按时间先后比较
SELECT * FROM products WHERE create_date < '2023-03-01';
11.3 布尔值比较
-- 布尔值比较
SELECT * FROM students WHERE is_active = TRUE;
SELECT * FROM students WHERE is_active = FALSE;
🎯 本章重点总结
💡 核心要点
关系运算符用于条件判断,返回布尔值
组合使用可以实现复杂的查询条件
注意数据类型,确保比较的合理性
字符串和日期需要用引号括起来
📝 课后作业
基础练习
创建员工表,包含薪资、入职日期、部门等字段
使用关系运算符查询:
薪资大于5000的员工
入职日期在2023年之前的员工
特定部门的员工
进阶练习
设计复杂查询:查询薪资在某个范围且入职时间在特定期间的员工
分析学生成绩数据,找出各分数段的学生分布
设计库存预警查询,找出需要补货的商品
实践项目
创建一个简单的学生管理系统,实现以下功能:
查询及格/不及格的学生
查询不同年龄段的学生
查询各班级的成绩统计