MySQL 提供了丰富的运算符,允许您对数据进行各种计算和逻辑处理。这些运算符大大增强了 SQL 的灵活性和功能性。以下是 MySQL 支持的四大类运算符及其应用场景:
1. 算术运算符
算术运算符用于执行数学计算,是最常用的运算符类型:
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
+ | 加法 | SELECT 5 + 3; | 8 |
- | 减法 | SELECT 10 - 4; | 6 |
* | 乘法 | SELECT 6 * 7; | 42 |
/ | 除法 | SELECT 15 / 3; | 5 |
DIV | 整除 | SELECT 10 DIV 3; | 3 |
% 或 MOD | 取模(求余数) | SELECT 10 % 3; 或 SELECT 10 MOD 3; | 1 |
实际应用示例:
计算学生年龄
SELECT name, YEAR(CURRENT_DATE) - birth_year AS age FROM students;
计算商品折扣后价格
SELECT product_name, price * 0.9 AS discounted_price FROM products;
2. 比较运算符
比较运算符用于比较两个值,返回布尔值(TRUE=1,FALSE=0):
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
= | 等于 | SELECT 5 = 5; | 1 |
<> 或 != | 不等于 | SELECT 5 <> 3; | 1 |
> | 大于 | SELECT 6 > 3; | 1 |
< | 小于 | SELECT 2 < 1; | 0 |
>= | 大于等于 | SELECT 5 >= 5; | 1 |
<= | 小于等于 | SELECT 4 <= 3; | 0 |
BETWEEN | 在范围内 | SELECT 5 BETWEEN 1 AND 10; | 1 |
IN | 在集合中 | SELECT 3 IN (1, 3, 5); | 1 |
LIKE | 模式匹配 | SELECT 'abc' LIKE 'a%'; | 1 |
IS NULL | 是否为NULL | SELECT NULL IS NULL; | 1 |
实际应用示例:
查找成绩大于80分的学生
SELECT * FROM students WHERE score > 80;
查找特定城市的学生
SELECT * FROM students WHERE city IN (' 北京', '上海', '广州');5
查找姓名以"张"开头的学生
SELECT * FROM students WHERE name LIKE ' 张%';
3. 逻辑运算符
逻辑运算符用于组合多个条件:
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
AND 或 && | 逻辑与 | SELECT 1 AND 1; | 1 |
OR 或 || | 逻辑或 | SELECT 1 OR 0; | 1 |
NOT 或 ! | 逻辑非 | SELECT NOT 0; | 1 |
XOR | 逻辑异或 | SELECT 1 XOR 0; | 1 |
实际应用示例:
查找18岁以上且成绩优秀的学生
SELECT * FROM students WHERE age > 18 AND score >= 90;
查找不是计算机系的学生
SELECT * FROM students WHERE NOT department = '计算机系';
4. 位运算符
位运算符直接操作二进制位:
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
& | 按位与 | SELECT 5 & 3; | 1 |
| | 按位或 | SELECT 5 | 3; | 7 |
^ | 按位异或 | SELECT 5 ^ 3; | 6 |
~ | 按位取反 | SELECT ~1; | 18446744073709551614 |
<< | 左移位 | SELECT 1 << 2; | 4 |
>> | 右移位 | SELECT 8 >> 2; | 2 |
实际应用示例:
权限系统中的应用
SELECT * FROM users WHERE permissions & 4 = 4; -- 检查是否有读权限
高效存储和检索标志位
SELECT * FROM products WHERE flags >> 2 & 1 = 1; -- 检查第三个标志位
运算符优先级
当表达式包含多个运算符时,MySQL 会按照以下优先级顺序计算:
1. 括号 `()`
2. 一元运算符(如 `-` 负号、`~` 按位取反)
3. 算术运算符(`*`、`/`、`%` → `+`、`-`)
4. 位运算符(`<<`、`>>` → `&` → `^` → `|`)
5. 比较运算符
6. 逻辑运算符(`NOT` → `AND` → `OR`、`XOR`)
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程