MySQL 提供了多种运算符来处理数据。运算符在 SQL 查询中执行各种计算、比较和逻辑操作。MySQL 运算符可以分为以下几类:
1. 算术运算符
算术运算符用于执行数学计算,包括加法、减法、乘法、除法等。
1.1 + 加法
SELECT 10 + 5 AS sum;
输出:
sum
---
15
1.2 - 减法
SELECT 10 - 5 AS difference;
输出:
difference
-----------
5
1.3 * 乘法
SELECT 10 * 5 AS product;
输出:
product
--------
50
1.4 / 除法
SELECT 10 / 5 AS quotient;
输出:
quotient
--------
2
1.5 % 取余
SELECT 10 % 3 AS remainder;
输出:
remainder
----------
1
2. 比较运算符
比较运算符用于在查询中进行值的比较。
2.1 = 等于
SELECT * FROM employees WHERE salary = 5000;
选择所有薪水为 5000 的员工。
2.2 != 或 <> 不等于
SELECT * FROM employees WHERE salary != 5000;
选择所有薪水不为 5000 的员工。
2.3 > 大于
SELECT * FROM employees WHERE salary > 5000;
选择所有薪水大于 5000 的员工。
2.4 < 小于
SELECT * FROM employees WHERE salary < 5000;
选择所有薪水小于 5000 的员工。
2.5 >= 大于或等于
SELECT * FROM employees WHERE salary >= 5000;
选择所有薪水大于或等于 5000 的员工。
2.6 <= 小于或等于
SELECT * FROM employees WHERE salary <= 5000;
选择所有薪水小于或等于 5000 的员工。
2.7 BETWEEN 范围比较
BETWEEN 用于检查一个值是否在指定范围内。
SELECT * FROM employees WHERE salary BETWEEN 4000 AND 6000;
选择薪水在 4000 和 6000 之间的员工。
2.8 IN 列表比较
IN 用于检查某个值是否在指定的列表中。
SELECT * FROM employees WHERE salary IN (3000, 4000, 5000);
选择薪水为 3000、4000 或 5000 的员工。
2.9 LIKE 模糊匹配
LIKE 用于进行模糊匹配,通常配合 % 和 _ 使用。
SELECT * FROM employees WHERE name LIKE 'J%';
选择名字以 “J” 开头的员工。
2.10 IS NULL 检查 NULL 值
SELECT * FROM employees WHERE bonus IS NULL;
选择没有奖金的员工。
3. 逻辑运算符
逻辑运算符用于执行条件的逻辑运算,如与(AND)、或(OR)、非(NOT)。
3.1 AND 逻辑与
AND 用于检查多个条件是否同时成立。
SELECT * FROM employees WHERE salary > 5000 AND department = 'HR';
选择薪水大于 5000 且所在部门为 “HR” 的员工。
3.2 OR 逻辑或
OR 用于检查至少一个条件是否成立。
SELECT * FROM employees WHERE salary > 5000 OR department = 'HR';
选择薪水大于 5000 或所在部门为 “HR” 的员工。
3.3 NOT 逻辑非
NOT 用于取反条件。
SELECT * FROM employees WHERE NOT department = 'HR';
选择不在 “HR” 部门的员工。
4. 位运算符
位运算符用于对整数值执行位级操作。
4.1 & 按位与
按位与运算符用于比较两个数字的对应位,只有在两个位都为 1 时结果才为 1。
SELECT 5 & 3 AS bitwise_and;
输出:
bitwise_and
------------
1
4.2 | 按位或
按位或运算符用于比较两个数字的对应位,只要一个位为 1,结果就为 1。
SELECT 5 | 3 AS bitwise_or;
输出:
bitwise_or
-----------
7
4.3 ^ 按位异或
按位异或运算符用于比较两个数字的对应位,只有当两个位不相同时结果才为 1。
SELECT 5 ^ 3 AS bitwise_xor;
输出:
bitwise_xor
------------
6
4.4 << 左移
左移运算符将一个数字的位向左移动指定的位数。
SELECT 5 << 1 AS left_shift;
输出:
left_shift
-----------
10
4.5 >> 右移
右移运算符将一个数字的位向右移动指定的位数。
SELECT 5 >> 1 AS right_shift;
输出:
right_shift
------------
2
5. 其他运算符
5.1 CONCAT() 字符串连接
CONCAT() 用于连接两个或多个字符串。
SELECT CONCAT('Hello', ' ', 'World') AS greeting;
输出:
greeting
---------
Hello World
5.2 IFNULL() 或 COALESCE() 替代 NULL 值
IFNULL() 或 COALESCE() 用于将 NULL 值替换为指定的值。
SELECT IFNULL(bonus, 0) AS adjusted_bonus FROM employees;
如果 bonus 为 NULL,则返回 0。
5.3 CASE 条件表达式
CASE 运算符允许根据条件返回不同的值。
SELECT name,
CASE
WHEN salary > 5000 THEN 'High'
WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium'
ELSE 'Low'
END AS salary_level
FROM employees;
6. 总结
- 算术运算符:用于进行加法、减法、乘法、除法等基本数学运算。
- 比较运算符:用于比较值,常用于
WHERE子句中,例如=,>,BETWEEN等。 - 逻辑运算符:用于组合多个条件,包括
AND,OR,NOT等。 - 位运算符:用于整数的位级运算,如
&,|,^,<<,>>等。 - 其他运算符:如字符串连接
CONCAT(), 替换 NULL 值IFNULL()和条件表达式CASE。
MySQL 运算符为 SQL 查询提供了强大的计算和数据处理能力,能够帮助我们执行复杂的查询和条件判断。掌握这些运算符将大大提升你的 SQL 查询效率和灵活性。