数据库原理与应用 第 15 章 · 上机二
课程第 15 章上机二 IFCASEWHILEREPEAT差在哪LOOP连续练习 版式
第 15 章 存储过程与函数 · 上机二

五种流程控制,各跑一遍

课件第 32 到 40 页只出题没给代码,这一份把每一道都写出来跑通。
已完成 0 / 6
本 次 上 机 题 目
  1. 01分支:按平均分判及格
  2. 02多分支:课件那两个例子
  3. 03循环:例 15-4 求 1 加到 100
  4. 04循环:例 15-6 求平方和不到 1000 的最大 i
  5. 05同一件事,WHILE 转零圈,REPEAT 转一圈
  6. 06无条件循环,靠 LEAVE 跳出来
  7. 用循环灌十行测试数据
01
第 15 章 · 上机二

分支:按平均分判及格

ELSEIF 从上往下试,中一个就跳出,后面的不再判断。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往里面存过程和函数。
mysql>

重 点

85 也满足后面两条,但走到第一个成立的分支就跳出去了。

想一想

把四个分支的顺序倒过来写,结果会变吗?

02
第 15 章 · 上机二

多分支:课件那两个例子

格式一按值配,格式二按条件配,都能写在 SELECT 里。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往里面存过程和函数。
mysql>

重 点

例 15-2 用格式一,例 15-3 用格式二,条件复杂就只能用格式二。

分清楚两种格式

格式拿什么配
CASE 字段值相等
CASE 空着条件成立

想一想

成绩为空那一行,为什么不能写成 WHEN score = NULL?

03
第 15 章 · 上机二

循环:例 15-4 求 1 加到 100

先判断再转,条件一开始就不成立,一圈都不转。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往里面存过程和函数。
mysql>

重 点

课件只出了题没给代码,这就是标准答案,跑出来 5050。

知道更多

循环变量 i 要自己加,忘了这一句就是死循环,服务器会一直转下去。

想一想

把 i <= 100 写成 i < 100,结果差多少?

04
第 15 章 · 上机二

循环:例 15-6 求平方和不到 1000 的最大 i

先转一圈再判断,UNTIL 后面写的是「什么时候停」。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往里面存过程和函数。
mysql>

重 点

跳出来的时候 i 已经多加了一次,所以答案要减一。

知道更多

UNTIL 后面不写分号,这是 REPEAT 跟别的语句不一样的地方。

想一想

为什么最后要写 i - 1 而不是 i?

05
第 15 章 · 上机二

同一件事,WHILE 转零圈,REPEAT 转一圈

把起点挪到范围外面,两种循环立刻分家。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往里面存过程和函数。
mysql>

重 点

一个是 0,一个是 101。REPEAT 至少转一圈,这一条不报错,只出数。

打个比方

先看有没有人再敲门,和先敲一下再看有没有人。

想一想

循环体里有 INSERT 的时候,这个差别会有多要命?

06
第 15 章 · 上机二

无条件循环,靠 LEAVE 跳出来

LOOP 自己不带条件,还得给它起个标签。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往里面存过程和函数。
mysql>

重 点

LEAVE 跳出整个循环,ITERATE 只跳过这一圈,两个都要写标签。

知道更多

标签写错在建的时候就报 1308,不用等到跑起来。

想一想

LOOP 里既没有 LEAVE 也没有条件,会发生什么?

第 15 章 · 上机二

用循环灌十行测试数据

循环最常见的正经用途:造数据。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开就在 teaching 库里,五张表已经装好。这一章要往里面存过程和函数。
mysql>

重 点

开头那句 DROP TABLE IF EXISTS 让这一题能重复跑,不必先按重置。

知道更多

真造几万行数据时,这个写法比一条条手敲快得多。

想一想

把 n 传成 0,循环转几圈?

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