MySQL代码执行结构

代码执行结构

在 MySQL 编程中,代码的执行结构有三种,分别为:

顺序结构;

分支结构;

循环结构。

顺序结构,自不必多说,在本文中,我们着重了解分支结构和循环结构。

分支结构

分支结构:事先准备多个代码块,通过判断条件是否满足,执行对应的代码。

在 MySQL 中,只有if分支结构,其基本语法为:

if 条件判断 then

-- 满足条件时,要执行的代码

else -- 可以没有 else 语句

-- 不满足条件时,要执行的代码

end if;

接下来,我们利用触发器和if分支,完成这样的需求:

在生成订单前,判断商品的库存是否满足,如果满足,则插入订单;否则,插入失败。

依次执行如下 SQL 语句,进行测试:

-- 查看商品表

select * from goods;

-- 查看订单表

select * from orders;

-- 修改语句结束符

delimiter $$

-- 创建触发器

create trigger before_order before insert on orders for each row

begin

-- 判断商品库存是否满足订单

-- 通过商品表获取商品库存量

select inventory from goods where id = NEW.goods_id into @inventory;

-- 比较库存

if @inventory < NEW.goods_number then

-- 库存不够,由于触发器不能阻止事件发生,因此我们只能暴力报错

insert into XXX values(XXX);

end if;

end

$$

-- 恢复语句结束符

delimiter ;

-- 插入订单

insert into orders values(null, 1, 1000);

-- 查看商品表

select * from goods;

-- 查看订单表

select * from orders;

-- 插入订单

insert into orders values(null, 1, 100);

-- 查看商品表

select * from goods;

-- 查看订单表

select * from orders;

如上图所示,虽然在报错的时候,没有给出友好的提示信息,但我们已经实现了该需求。

循环结构

循环结构:表示某段代码在指定条件下进行重复执行动作。

在 MySQL 中,没有for循环,仅有while循环、loop循环和repeat循环,呃,还有一种非标准的goto循环,在此我们仅介绍while循环,其基本语法为:

while 条件判断 do

-- 满足条件时要执行的代码

-- 变更循环条件

end while;

在使用循环结构的时候,我们经常需要对循环进行控制,即在循环结构内部进行判断和控制。虽然在 MySQL 中没有continue和break,但是有其替代关键字:

iterate:迭代,类似于continue,表示结束本次循环,不执行后续步骤,直接开始下一次循环;

leave:离开,类似于break,直接结束整个循环。

上述两个关键字的使用方法为,

基本语法:iterate/leave + 循环名称;

因此,在我们定义循环结构的时候,就需要进行略微的修改了,具体形式如下:

循环名称: while 条件判断 do

-- 满足条件时要执行的代码

-- 变更循环条件

iterate/leave 循环名称; -- 控制循环语句

end while;

由于触发器只能执行简单的一次触发动作,因此不适合演示循环结构。循环结构需要结合函数进行使用,所以在介绍函数的时候,我们再来体验循环结构的魅力。

温馨提示:符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。

mysql 代码结构_MySQL代码执行结构相关推荐

  1. mysql导出表结构_mysql导入导出表结构及表数据及执行sql文件

    从数据库导出数据库文件: 1.将数据库mydb导出到e:\MySQL\mydb.sql文件中: 打开开始->运行->输入cmd 进入命令行模式 c:\>MySQLdump -h lo ...

  2. mysql 转成树_Mysql树型结构2种方式及相互转换

    Mysql实现树型结构,数据库上常见有2种方式:领接表.预排序遍历树(MPTT). 领接表方式-- 主要依赖于一个 parent 字段,用于指向上级节点,将相邻的上下级节点连接起来,id 为自动递增自 ...

  3. mysql修改表的结构_MySQL修改表结构

    我们在修改表字段类型和约束条件的时候,如果表中的字段已经有值了,但是你修改的这个类型和字段里边的值不匹配是不允许修改的,就比如说你当初设置字段的时候,字段的值是允许存空值,并且字段里边已经存储空值了, ...

  4. mysql sql 片段_MySQL代码片段

    1.[代码][SQL]代码 --导出为xml文件 mysql -X -uroot -proot -e "use testa;select * from test_tb;" > ...

  5. mysql修改字段结构_MySQL修改表结构及其添加删除修改字段功能

    MySQL修改表结构添加删除修改字段 创建数据库CREATE DATABASE database_name 创建表CREATE TABLE `user` ( `id` int(11) unsigned ...

  6. java 修改mysql数据库表结构_MYSQL数据库表结构优化方法详解

    摘要:这篇MySQL栏目下的"MYSQL数据库表结构优化方法详解",介绍的技术点是"mysql数据库表结构.MySQL数据库.数据库表结构.MySQL.据库表结构.数据库 ...

  7. mysql 查询树形结构_MySql/Oracle树形结构查询

    Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...

  8. mysql类型设计_mysql设计表结构数据类型的选择

    选择合适的数据类型 在使用MySQL创建数据表的时候会遇到一个问题,如何为字段选择合适的数据类型.比如创建一个员工信息表,每个字段都可以用很多种类型来定义, int,char,float等等. cha ...

  9. mysql is复制表结构_MySQL复制表结构和内容到另一张表中的SQL语句

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. springboot读取linux文件_SpringBoot读取Resource下文件的几种方式
  2. 在WebView中如何让JS与Java安全地互相调用
  3. Python字典和集合
  4. jquery 获取键值对中最大值_jQuery的AJAX发送数据键值对
  5. Thinkphp3.2 中使用find_in_set
  6. 黑白迷宫问题——深度优先搜索算法
  7. java中for 的几种常见用法
  8. 礼县职业中等专业学校计算机,礼县职业中等专业学校
  9. VC++ Call Stack调试
  10. 【转】GB2312 编码
  11. 如何修改iTunes的iPhone备份路径?
  12. 十六进制、二进制转换以及练习
  13. matlab videoToFrames 视频切割成帧
  14. 网络流量监控(局域网)
  15. Apache和PHP环境打开php页面File Not Found问题
  16. MySQL 运维 - 从零开始学习 | 超详细
  17. python抓取google搜索结果
  18. 【脚本教程】脱机的一些指令参考
  19. 华科计算机博导刘云生论文,华科计算机学院导师名录及研究方向
  20. 【windows】win8.1的安装中绕过Microsoft帐户登录

热门文章

  1. python 脚本_基于Python的ArcGIS脚本编程知识点总结
  2. en60204标准_工业机械一般办理CE认证的标准
  3. php 特有,PHP特殊数据类型有哪些?原来这门编程语言如此有趣
  4. html标签slot,插槽solt和slot-scope
  5. java 日期 相差的天数_JAVA计算两个日期之间相差的天数
  6. 严格对角占优矩阵特征值_盖尔金圆定理及严格对角占优矩阵(SDD)
  7. php实现栏目三种类型,WordPress后台edit-tags.php里无限栏目分类实现
  8. 双系统linux解压后怎么安装,先装linux再装windows双系统
  9. 09 动态数组和数据
  10. 马的走法编程java_马周游问题(Java实现)