算术运算符

运算符 说明
+
-
*
/
%

比较运算符

运算符 说明
= 等于
<=> 安全等于
<> 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于

=

  • 如果等号两边的值、字符串或表达式都为字符串,则 MySQL 会按照字符串进行比较,其比较的是每个字符串中字符的 ASCII 编码是否相等
  • 如果等号两边的值都是整数,则 MySQL 会按照整数来比较两个值的大小
  • 如果等号两边的值一个是整数,另一个是字符串,则 MySQL 会将字符串转化为数字进行比较
  • 如果等号两边的值、字符串或表达式中有一个为 NULL,则比较结果为 NULL

逻辑运算符

运算符 名称 说明
NOT (!) 逻辑非 当给定的值为0时返回1;当给定的值为非0值时返回0; 当给定的值为NULL时,返回NULL
AND (&&) 逻辑与 当给定的所有值均为非0值,并且都不为NULL时,返回 1;当给定的一个值或者多个值为0时则返回0;否则返回NULL
OR (||) 逻辑或 当给定的值都不为NULL,并且任何一个值为非0值时,则返 回1,否则返回0;当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;当两个值都为 NULL时,返回NULL。
XOR 逻辑异或 是当给定的值中任意一个值为NULL时,则返回NULL;如果 两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1(相同为0,不同为1)

位运算符

运算符 说明
& 按位与
| 按位或
^ 按位异或
~ 按位取反
>> 按位右移
<< 按位左移

运算符的优先级

非符号类型运算符

运算符 说明
IS NOT NULL 不为空
LEAST 最小值
GREATEST 最大值
BETWEEN AND 两值之间
IS NULL 为空
IN 属于
NOT IN 不属于
LIKE 模糊匹配
REGEXP 正则表达式
RLIKE 正则表达式

正则表达式查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- 1. 查询以特定字符或字符串开头的记录 字符‘^’匹配以特定字符或者字符串开头的文本
SELECT * FROM fruits WHERE f_name REGEXP '^b';

-- 2. 查询以特定字符或字符串结尾的记录 字符‘$’匹配以特定字符或者字符串结尾的文本
SELECT * FROM fruits WHERE f_name REGEXP 'y$';

-- 3. 用符号"."来替代字符串中的任意一个字符 字符‘.’匹配任意一个字符
SELECT * FROM fruits WHERE f_name WHERE f_name REGEXP 'a.g';

-- 4. 使用"*"和"+"来匹配多个字符 星号‘*’匹配前面的字符任意多次,包括0次。
SELECT * FROM fruits WHERE f_name REGEXP '^ba+';

-- 6. 匹配指定字符中的任意一个 方括号“[]”指定一个字符集合,只匹配其中任何一个字符
SELECT * FROM fruits WHERE f_name REGEXP '[ot]';
SELECT * FROM fruits WHERE s_id REGEXP '[456]';

-- 7. 匹配指定字符以外的字符 “[^字符集合]” 匹配不在指定集合中的任何字符
SELECT * FROM fruits WHERE f_id REGEXP '[^a-e1-2]';

-- 8. 使用{n,}或者{n,m}来指定字符串连续出现的次数 “字符串{n,}”表示至少匹配n次前面的字符;“字符串{n,m}”表示匹配前面的字符串不少于n次,不多于m次
SELECT * FROM fruits WHERE f_name REGEXP 'x{2,}';
SELECT * FROM fruits WHERE f_name REGEXP 'ba{1,3}';