📌 目录
- MySQL 运算符概述
- 常见的 MySQL 运算符类型
- 2.1 算术运算符
- 2.2 比较运算符
- 2.3 逻辑运算符
- 2.4 位运算符
- 2.5 字符串运算符
- 2.6 NULL 运算符
- 运算符优先级
- 运算符使用示例
- 参考资料
MySQL 运算符概述
MySQL 提供了多种类型的运算符,支持在 SQL 查询中进行数学运算、比较、逻辑判断、字符串操作等。掌握这些运算符将有助于提高查询效率并使得数据操作更为灵活。
常见的 MySQL 运算符类型
2.1 算术运算符
算术运算符用于对数字进行基本的数学运算,通常用于计算字段值或在查询中执行数学操作。
📌 常见算术运算符:
+
:加法运算符。SELECT 5 + 3; -- 输出:8
-
:减法运算符。SELECT 10 - 4; -- 输出:6
*
:乘法运算符。SELECT 6 * 7; -- 输出:42
/
:除法运算符。SELECT 10 / 2; -- 输出:5
%
:取余运算符(求余数)。SELECT 10 % 3; -- 输出:1
2.2 比较运算符
比较运算符用于对两个值进行比较,返回 TRUE
或 FALSE
,在条件查询、更新数据时非常有用。
📌 常见比较运算符:
=
:等于。SELECT * FROM employees WHERE salary = 5000;
!=
或<>
:不等于。SELECT * FROM employees WHERE salary != 5000;
>
:大于。SELECT * FROM employees WHERE salary > 5000;
<
:小于。SELECT * FROM employees WHERE salary < 5000;
>=
:大于或等于。SELECT * FROM employees WHERE salary >= 5000;
<=
:小于或等于。SELECT * FROM employees WHERE salary <= 5000;
BETWEEN
:在指定范围内。SELECT * FROM employees WHERE salary BETWEEN 3000 AND 5000;
IN
:匹配多个值之一。SELECT * FROM employees WHERE department_id IN (1, 2, 3);
LIKE
:匹配部分字符串。SELECT * FROM employees WHERE name LIKE 'John%';
IS NULL
:检查是否为NULL
。SELECT * FROM employees WHERE department_id IS NULL;
2.3 逻辑运算符
逻辑运算符用于多个条件的组合判断,可以用于 WHERE
子句中。
📌 常见逻辑运算符:
AND
:同时满足多个条件。SELECT * FROM employees WHERE salary > 3000 AND department_id = 2;
OR
:满足至少一个条件。SELECT * FROM employees WHERE salary > 3000 OR department_id = 2;
NOT
:否定条件。SELECT * FROM employees WHERE NOT department_id = 2;
XOR
:如果两个条件只有一个为TRUE
,则返回TRUE
。SELECT * FROM employees WHERE salary > 3000 XOR department_id = 2;
2.4 位运算符
位运算符用于对整数进行按位操作,主要用于与二进制数据打交道时。
📌 常见位运算符:
&
:按位与(AND)运算符。SELECT 5 & 3; -- 输出:1 (二进制: 101 & 011 = 001)
|
:按位或(OR)运算符。SELECT 5 | 3; -- 输出:7 (二进制: 101 | 011 = 111)
^
:按位异或(XOR)运算符。SELECT 5 ^ 3; -- 输出:6 (二进制: 101 ^ 011 = 110)
~
:按位非(NOT)运算符。SELECT ~5; -- 输出:-6 (二进制: ~101 = 010)
<<
:左移运算符。SELECT 5 << 1; -- 输出:10 (二进制: 101 << 1 = 1010)
>>
:右移运算符。SELECT 5 >> 1; -- 输出:2 (二进制: 101 >> 1 = 10)
2.5 字符串运算符
MySQL 支持一些特殊的字符串运算符,能够帮助进行字符串的拼接和匹配。
📌 常见字符串运算符:
CONCAT()
:连接两个或多个字符串。SELECT CONCAT('Hello', ' ', 'World'); -- 输出:Hello World
CONCAT_WS()
:连接字符串,并指定分隔符。SELECT CONCAT_WS('-', '2025', '04', '03'); -- 输出:2025-04-03
REGEXP
:正则表达式匹配。SELECT * FROM employees WHERE name REGEXP '^J';
2.6 NULL 运算符
NULL 运算符用于处理 NULL
值,允许在 SQL 查询中判断和操作 NULL
。
📌 常见 NULL 运算符:
IS NULL
:检查值是否为NULL
。SELECT * FROM employees WHERE department_id IS NULL;
IS NOT NULL
:检查值是否不是NULL
。SELECT * FROM employees WHERE department_id IS NOT NULL;
运算符优先级
MySQL 中的运算符按照优先级进行计算,较高优先级的运算符会先计算。常见运算符的优先级如下:
- 括号
()
:具有最高优先级,确保括号内的表达式首先计算。 - 算术运算符
+
,-
,*
,/
,%
:其次是算术运算符。 - 比较运算符
=
,>
,<
,BETWEEN
,IN
,LIKE
,IS NULL
。 - 逻辑运算符
NOT
:优先级高于AND
和OR
。 AND
:优先级高于OR
。
运算符优先级决定了在没有括号的情况下,SQL 表达式是如何被解析的。
运算符使用示例
- 使用算术运算符计算总工资:
SELECT salary * 12 AS annual_salary FROM employees;
- 使用比较运算符筛选高薪员工:
SELECT * FROM employees WHERE salary > 7000;
- 使用逻辑运算符查询特定部门的高薪员工:
SELECT * FROM employees WHERE salary > 5000 AND department_id = 3;
- 使用
BETWEEN
查询工资范围:
SELECT * FROM employees WHERE salary BETWEEN 4000 AND 6000;
- 使用
CONCAT()
合并名字和职位:
SELECT CONCAT(first_name, ' ', last_name, ' - ', job_title) AS employee_info FROM employees;
参考资料
MySQL 提供了丰富的运算符类型,涵盖了从算术计算到字符串处理、逻辑判断等各个方面。了解这些运算符的使用方法和优先级,将帮助你在编写 SQL 查询时更加高效和灵活。
发表回复