数据库原理与应用 第 15 章 · 第三节
课程 › 第 15 章 › 第三节 算术运算符比较运算符正则表达式逻辑与位运算优先级 版式
第 15 章 存储过程与函数 · 第三节

运算符与表达式

算术、比较、逻辑和位运算符,以及运算符的优先级
本 节 知 识 点
  1. 09算术运算符与算术表达式
  2. 10比较运算符
  3. 11正则表达式
  4. 12逻辑运算符与位运算符
  5. 13运算符的优先级
09
第 15 章 · 第三节 · 课件第 21、22 页

算术运算符与算术表达式

除法 / 的商是实数,DIV 是整数除。

课件第 22 页

重 点

2 / 4 的结果是 0.5000,2 DIV 4 的结果是 0。除数为 0 时结果为 NULL。

10
第 15 章 · 第三节 · 课件第 23、24 页合并重做

比较运算符

结果为 1、0 或 NULL,判断空值用 IS NULL。

15.2 MySQL 编程基础课件第 23、24 页合并

比较运算符

运算符含义例子与结果
=相等2 = 5 为 0
> < >= <=大于、小于、大于等于、小于等于5 >= 3 为 1
<> 或 !=不等于-5 <> 3 为 1
<=>安全等于,两边都是 NULL 时为 1NULL <=> NULL 为 1
IS NULL、IS NOT NULL是否为 NULLNULL IS NULL 为 1
BETWEEN … AND …是否在两个值之间10 BETWEEN 1 AND 20 为 1
IN、NOT IN是否在集合中5 IN (10, 20, 30) 为 0
LIKE、NOT LIKE模式匹配,% 代表任意多个字符,_ 代表一个字符'张玉涛' LIKE '张%' 为 1
REGEXP正则表达式匹配's1' REGEXP '^s[1-9]' 为 1
  • 关系表达式的结果是 1(真)、0(假)或 NULL。有 NULL 参加比较时,结果为 NULL
  • IN 的集合可以直接列出,也可以是一个 SELECT 子查询

练一练

NULL = NULL 的结果是什么?
  1. A1
  2. B0
  3. CNULL
答案 C

有 NULL 参加比较,结果为 NULL。判断是否为空要用 IS NULL,或者用安全等于 <=>。

11
第 15 章 · 第三节 · 课件第 25、26 页合并重做

正则表达式

用 ^ $ . [ ] * { } 描述字符串的模式。

15.2 MySQL 编程基础课件第 25、26 页合并

正则表达式 REGEXP

a REGEXP p:a 是字符串,p 是用正则表达式写的模式。a 与 p 匹配时结果为 1,否则为 0,有一个为 NULL 时结果为 NULL。

符号匹配例子
^以后面的字符开头's1' REGEXP '^s' 为 1
$以前面的字符结尾'abc' REGEXP 'c$' 为 1
.任意一个字符'abc' REGEXP 'a.c' 为 1
[…]方括号中的任意一个字符。[a-z] 表示 a 到 z,[0-9] 表示任意数字's1' REGEXP '[0-9]' 为 1
*前面的字符出现 0 次或多次'aaa' REGEXP '^a*$' 为 1
{n,m}前面的字符至少出现 n 次,至多 m 次'aa' REGEXP 'a{2,5}' 为 1
  • 字符串中只要有一部分与模式匹配,结果就是 1。要整个字符串匹配,模式要以 ^ 开头、以 $ 结尾
  • [a-z]* 可以匹配空串,所以 '123' REGEXP '[a-z]*' 也为 1

重 点

LIKE 要求整个字符串符合模式,REGEXP 只要有一部分匹配就为 1。

12
第 15 章 · 第三节 · 课件第 27、28、29 页合并重做

逻辑运算符与位运算符

逻辑运算看真假,位运算按二进制位计算。

15.2 MySQL 编程基础课件第 27、28、29 页合并

逻辑运算符与位运算符

逻辑运算符
运算符结果为 1 的情况例子
NOT 或 !操作数为 0!5 为 0
AND 或 &&两个操作数都非零5 AND NULL 为 NULL
OR 或 ||至少一个非零0 OR 5 为 1
XOR一个为零,另一个非零5 XOR 1 为 0
  • 有 NULL 参加时结果一般为 NULL,但 0 AND NULL 为 0,1 OR NULL 为 1
  • || 和 && 在 MySQL 8.0 中已不推荐使用
位运算符
运算符含义例子
&按位与7 & 4 为 4
|按位或7 | 4 为 7
^按位异或7 ^ 4 为 3
~按位取反~(-2) 为 1
>> <<右移、左移7 >> 2 为 1
  • 7 的二进制是 111,4 是 100,按位与得 100,即 4

重 点

逻辑表达式常用来表示复杂的条件,例如判断闰年。

13
第 15 章 · 第三节 · 课件第 30、31 页合并重做

运算符的优先级

先括号,再算术,然后比较,最后逻辑运算。

15.2 MySQL 编程基础课件第 30、31 页合并

运算符的优先级

从高到低,相邻的几级合在一起
次序运算符
1括号 ( )
2!、负号 -、~
3^
4*、/、DIV、%、MOD
5+、-
6<<、>>
7&,然后 |
8比较运算符,然后 BETWEEN
9NOT
10AND,然后 XOR,最后 OR
11赋值 =、:=
例子
  • (2021 MOD 4)=0 AND (2021 MOD 100 != 0) 的值为 0
  • '陈佳' LIKE '陈%' AND 19 BETWEEN 17 AND 21 AND 89>=85 的值为 1
  • 1 || 4 XOR 4 的值为 1,XOR 先算
  • 1<<2+8-3*9 MOD 4^3 的值为 16
  • 优先级高的先算,优先级相同的从左到右算
  • 拿不准时加括号

试一试按优先级一步步计算

计算

实 验

实验 2-1 算术与比较运算

实 验

实验 2-2 逻辑运算与优先级

保山学院·人工智能教研室·曹鼎鼎