📌 目录

  1. MySQL 运算符概述
  2. 常见的 MySQL 运算符类型
    • 2.1 算术运算符
    • 2.2 比较运算符
    • 2.3 逻辑运算符
    • 2.4 位运算符
    • 2.5 字符串运算符
    • 2.6 NULL 运算符
  3. 运算符优先级
  4. 运算符使用示例
  5. 参考资料

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 比较运算符

比较运算符用于对两个值进行比较,返回 TRUEFALSE,在条件查询、更新数据时非常有用。

📌 常见比较运算符

  • =:等于。 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:检查是否为 NULLSELECT * 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,则返回 TRUESELECT * 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:检查值是否为 NULLSELECT * FROM employees WHERE department_id IS NULL;
  • IS NOT NULL:检查值是否不是 NULLSELECT * FROM employees WHERE department_id IS NOT NULL;

运算符优先级

MySQL 中的运算符按照优先级进行计算,较高优先级的运算符会先计算。常见运算符的优先级如下:

  1. 括号 ():具有最高优先级,确保括号内的表达式首先计算。
  2. 算术运算符 +, -, *, /, %:其次是算术运算符。
  3. 比较运算符 =, >, <, BETWEEN, IN, LIKE, IS NULL
  4. 逻辑运算符 NOT:优先级高于 ANDOR
  5. AND:优先级高于 OR

运算符优先级决定了在没有括号的情况下,SQL 表达式是如何被解析的。


运算符使用示例

  1. 使用算术运算符计算总工资
SELECT salary * 12 AS annual_salary FROM employees;

  1. 使用比较运算符筛选高薪员工
SELECT * FROM employees WHERE salary > 7000;

  1. 使用逻辑运算符查询特定部门的高薪员工
SELECT * FROM employees WHERE salary > 5000 AND department_id = 3;

  1. 使用 BETWEEN 查询工资范围
SELECT * FROM employees WHERE salary BETWEEN 4000 AND 6000;

  1. 使用 CONCAT() 合并名字和职位
SELECT CONCAT(first_name, ' ', last_name, ' - ', job_title) AS employee_info FROM employees;


参考资料


MySQL 提供了丰富的运算符类型,涵盖了从算术计算到字符串处理、逻辑判断等各个方面。了解这些运算符的使用方法和优先级,将帮助你在编写 SQL 查询时更加高效和灵活。