数据库原理与应用 第 15 章 · 第四节
课程第 15 章第四节 五类运算符算术比较特殊比较正则上正则下逻辑逻辑举例位运算优先级优先级举例 版式
第 15 章 存储过程与函数 · 第四节

运算符与表达式

本 节 知 识 点
  1. 21算术、比较、逻辑、位运算,外加优先级
  2. 22加减乘除,外加整除和求余
  3. 23比出来的结果只有三种
  4. 24跟 NULL 打交道要用专门的写法
  5. 25REGEXP 比 LIKE 讲究得多
  6. 26星号和花括号管次数
  7. 27与、或、非,再加一个异或
  8. 28把几个条件串起来
  9. 29拿二进制的每一位来算
  10. 30十六级,从括号一路排到赋值
  11. 31一串式子拆开算给你看
21
第 15 章 · 第四节

算术、比较、逻辑、位运算,外加优先级

这一节全是表格,一条条点开试最省事。

第 21 页课件

试一试四类运算符,点一行算一个

看哪一类
点一行,把结果算出来
表达式结果

重 点

运算符加上运算对象就是表达式,表达式算出来的那个东西就是值。

想一想

这些运算符里,哪几个是别的语言里没见过的?

22
第 15 章 · 第四节

加减乘除,外加整除和求余

DIV 只要整数商,MOD 只要余数。

第 22 页课件

分清楚两个容易忘

写法算出什么
2 DIV 40,商取整
5 % 32,余数

重 点

4/8 算出来是 0.5000 带四位小数,MySQL 的除法结果是精确类型。

知道更多

5 % 3 和 5 MOD 3 完全一样,MOD 既能当运算符也能当函数用。

23
第 15 章 · 第四节

比出来的结果只有三种

1 是真,0 是假,还有一个 NULL。

第 23 页课件

重 点

任何值跟 NULL 比,结果都是 NULL,不是 0 也不是 1。

记牢它三个值

  1. 1 成立
  2. 0 不成立
  3. NULL 不知道

想一想

WHERE score = NULL 能查出成绩为空的行吗?

24
第 15 章 · 第四节

跟 NULL 打交道要用专门的写法

IS NULL、IS NOT NULL,还有一个飞碟符号。

第 24 页课件

分清楚三种写法

写法结果
NULL = NULLNULL
NULL <=> NULL1
NULL IS NULL1

重 点

<=> 是安全等于,两边都是 NULL 它给 1,只有一边是 NULL 它给 0。

知道更多

IN 判断在不在集合里,BETWEEN 判断在不在区间里,两头都算。

25
第 15 章 · 第四节

REGEXP 比 LIKE 讲究得多

LIKE 只有两个通配符,正则有一整套。

第 25 页课件

记牢它四个常用

  1. ^ 开头
  2. $ 结尾
  3. . 任意一个
  4. […] 里面任选

重 点

'abc' REGEXP '[a-z]' 结果是 1,只要串里有一个小写字母就算匹配。

想一想

LIKE 的 % 和正则的 .* 是一回事吗?

26
第 15 章 · 第四节

星号和花括号管次数

* 是零次到多次,{n,m} 是至少 n 次至多 m 次。

第 26 页课件

重 点

'aa' REGEXP 'a{2,5}' 结果是 1,两个 a 落在二到五次这个范围里。

知道更多

正则不是 MySQL 独有的,会写这一套,以后在别的地方也用得上。

上机做

上机三第 2 题 字符串函数一起试

27
第 15 章 · 第四节

与、或、非,再加一个异或

NOT 可以写成叹号,AND 可以写成两个与号。

第 27 页课件

分清楚四个逻辑符

写法什么时候真
AND / &&两边都真
OR / ||有一个真
XOR只有一边真
NOT / !原来是假

重 点

一边是 NULL 的时候要当心:5 AND NULL 算出来是 NULL,不是 0。

28
第 15 章 · 第四节

把几个条件串起来

复杂的 WHERE 条件就是这样搭出来的。

第 28 页课件

重 点

5*10>25-4 AND -5+2*3<10 结果是 1,两个比较都成立。

知道更多

10 BETWEEN 5 AND 20 OR 'ABC' LIKE 'A_C' 也是 1,前一半就已经成立了。

想一想

OR 的两边,MySQL 会不会两边都算一遍?

29
第 15 章 · 第四节

拿二进制的每一位来算

按位与、按位或、按位异或、左移右移。

第 29 页课件

重 点

7 & 4 结果是 4:0111 和 0100 逐位相与,只剩第三位。

打个比方

一排开关,两个人各按了一部分,按位与就是问哪几个开关两人都按了。

知道更多

^ 在 MySQL 里是按位异或,不是乘方。求乘方要写 POWER(4,3)。

想一想

1 << 4 为什么等于 16?

30
第 15 章 · 第四节

十六级,从括号一路排到赋值

记不住全部没关系,记住几条最容易错的。

第 30 页课件

记牢它四条最常错

  1. 括号最高
  2. 算术比比较高
  3. 比较比逻辑高
  4. AND 比 OR 高

重 点

同一级的运算符从左往右算,3*9 MOD 7 是先乘后取余。

知道更多

拿不准就加括号。括号不要钱,看错一次代价可大得多。

31
第 15 章 · 第四节

一串式子拆开算给你看

1 << 2+8-3*9 MOD 4^3 到底等于几。

第 31 页课件

试一试四步拆开算

按 MySQL 的规矩算

重 点

答案是 16。四个运算符全用上了,谁先谁后完全看那张优先级表。

练一练

表达式 (2021 MOD 4)=0 AND (2021 MOD 100 != 0) 的值是?
  1. A1
  2. B0
  3. CNULL
  4. D报错
答案 B

2021 除以 4 余 1,所以第一个括号里 1=0 不成立,整个 AND 就是 0。

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