mysql 代码结构_MySQL代码执行结构
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代码执行结构相关推荐
- mysql导出表结构_mysql导入导出表结构及表数据及执行sql文件
从数据库导出数据库文件: 1.将数据库mydb导出到e:\MySQL\mydb.sql文件中: 打开开始->运行->输入cmd 进入命令行模式 c:\>MySQLdump -h lo ...
- mysql 转成树_Mysql树型结构2种方式及相互转换
Mysql实现树型结构,数据库上常见有2种方式:领接表.预排序遍历树(MPTT). 领接表方式-- 主要依赖于一个 parent 字段,用于指向上级节点,将相邻的上下级节点连接起来,id 为自动递增自 ...
- mysql修改表的结构_MySQL修改表结构
我们在修改表字段类型和约束条件的时候,如果表中的字段已经有值了,但是你修改的这个类型和字段里边的值不匹配是不允许修改的,就比如说你当初设置字段的时候,字段的值是允许存空值,并且字段里边已经存储空值了, ...
- mysql sql 片段_MySQL代码片段
1.[代码][SQL]代码 --导出为xml文件 mysql -X -uroot -proot -e "use testa;select * from test_tb;" > ...
- mysql修改字段结构_MySQL修改表结构及其添加删除修改字段功能
MySQL修改表结构添加删除修改字段 创建数据库CREATE DATABASE database_name 创建表CREATE TABLE `user` ( `id` int(11) unsigned ...
- java 修改mysql数据库表结构_MYSQL数据库表结构优化方法详解
摘要:这篇MySQL栏目下的"MYSQL数据库表结构优化方法详解",介绍的技术点是"mysql数据库表结构.MySQL数据库.数据库表结构.MySQL.据库表结构.数据库 ...
- mysql 查询树形结构_MySql/Oracle树形结构查询
Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...
- mysql类型设计_mysql设计表结构数据类型的选择
选择合适的数据类型 在使用MySQL创建数据表的时候会遇到一个问题,如何为字段选择合适的数据类型.比如创建一个员工信息表,每个字段都可以用很多种类型来定义, int,char,float等等. cha ...
- mysql is复制表结构_MySQL复制表结构和内容到另一张表中的SQL语句
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
最新文章
- springboot读取linux文件_SpringBoot读取Resource下文件的几种方式
- 在WebView中如何让JS与Java安全地互相调用
- Python字典和集合
- jquery 获取键值对中最大值_jQuery的AJAX发送数据键值对
- Thinkphp3.2 中使用find_in_set
- 黑白迷宫问题——深度优先搜索算法
- java中for 的几种常见用法
- 礼县职业中等专业学校计算机,礼县职业中等专业学校
- VC++ Call Stack调试
- 【转】GB2312 编码
- 如何修改iTunes的iPhone备份路径?
- 十六进制、二进制转换以及练习
- matlab videoToFrames 视频切割成帧
- 网络流量监控(局域网)
- Apache和PHP环境打开php页面File Not Found问题
- MySQL 运维 - 从零开始学习 | 超详细
- python抓取google搜索结果
- 【脚本教程】脱机的一些指令参考
- 华科计算机博导刘云生论文,华科计算机学院导师名录及研究方向
- 【windows】win8.1的安装中绕过Microsoft帐户登录
热门文章
- python 脚本_基于Python的ArcGIS脚本编程知识点总结
- en60204标准_工业机械一般办理CE认证的标准
- php 特有,PHP特殊数据类型有哪些?原来这门编程语言如此有趣
- html标签slot,插槽solt和slot-scope
- java 日期 相差的天数_JAVA计算两个日期之间相差的天数
- 严格对角占优矩阵特征值_盖尔金圆定理及严格对角占优矩阵(SDD)
- php实现栏目三种类型,WordPress后台edit-tags.php里无限栏目分类实现
- 双系统linux解压后怎么安装,先装linux再装windows双系统
- 09 动态数组和数据
- 马的走法编程java_马周游问题(Java实现)