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是否为NULLSELECT 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`)

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)