当前课程知识点:数据库技术应用 >  学习情境四、银行存取款机数据库编程 >  模块1、银行存取款机存储过程 >  4.1.1创建和执行存储过程

返回《数据库技术应用》慕课在线视频课程列表

4.1.1创建和执行存储过程在线视频

下一节:任务实施:银行存取款机创建和执行存储过程

返回《数据库技术应用》慕课在线视频列表

4.1.1创建和执行存储过程课程教案、知识点、字幕

大家好

欢迎来到数据库技术应用在线开放课程

今天我们要完成的任务是创建和执行存储过程

共分成三个子任务

分别是子任务一

创建存储过程实现开卡时对卡号和金额的约束

如果卡号已经存在

提示该卡号已经被注册

如果金额小于一元

则提示开户金额不能低于一元

成功开卡提示

开卡成功并将开卡数据插入到表当中

第二个子任务调用存储过程

第三个子任务删除存储过程

那么本节课的目标是让大家理解存储过程的意义

掌握存储过程定义的方法

掌握存储过程管理的方法

让我们一起进入这是技能学习环节

首先我们看一下存储过程的优点

第一他是在服务器端运行执行速度快

第二执行一次后规划就驻留在高速缓冲存储器当中

提高了系统的性能

第三确保了数据库的安全性

所以在我们前期所做的增删改查的基础上

我们要增加数据库的安全性

提高他的查询效率

那么我们需要借用到存储过程来实现

那怎么来创建存储过程

我们来看一下它的语法create procedure存储过程名称

括号是他所带的参数

这个参数可以是输入参数也可以是输出参数

也可以是输入输出参数

所以用in out inout来控制参数的类型

那么存储过程体式存储过程的主体

我们需要用到begin end 把他框住

delimiter是修改结束标志

我们在做存储过程的时候

里面包含很多的我们前面所学到的

增删改查语句等等简单的语句格式

所以要把它整合成存储过程

我们需要有特殊的结束符

但是结束之后

你还需要把他变更成他原有的分号结束

第三存储过程还涉及到复杂的编程

我们接下来需要补充一些数据库编程的知识

比如说局部变量 说到变量 大家都不陌生

我们知道变量要先声明后使用它的语法格式是declear

变量类型就可以对变量进行声明

也就是我们做开辟空间的这样的操作

比如说declear str1,str2,varchar6

我们声明了两个变量str1,str2开辟的空间

按照变长字符类型最大为6开辟了空间

那么我们的局部变量

他只能在刚刚说的begin end的语句块当中进行声明

接下来变量的赋值

声明完之后

我们就可以对它进行赋值了

赋值的方法

第一个set

变量名等于表达式

比如说set num等于1

str1等于hello

给这两个变量做了一个赋值操作

我们还可以用select into 这样的语法

把选定的列值直接存储在我们的变量当中

select列名

into 变量名

比如说select userID fullname into 用户编号

用户姓名这两个变量里

from account where fullname等于李昊华

就可以实现查询的同时

把我们查到的结果存在了那两个变量当中

接下来流程控制语句在程序设计当中

流程分成顺序结构

选择分支结构和循环结构

所以在这里说一下

在数据库编程当中

我们也可以沿用选择分支结构和循环结构

当然也包括顺序结构

那如果大家用到选择分支结构的话

我们仍然用if语句来实现

在mysql当中

它的语法是这样的

if条件1 then语句序列1

else if条件2 then语句序列2

else语句序列n

根据你分支的个数来选择我们用哪一个子句

最后记得endif结束

那么循环结构用什么来控制

用while条件DO程序段

end while来控制我们重复执行的循环语句

那么这些知识有了之后

我们存储过程就可以创建了

创建完存储过程

我们想查看一下当前服务器上面有哪些存储过程

我们沿用前面的知识show database查看数据库

show table查看我们的表

那现在我们要查看存储过程的话

用到的就是show procedure status

可以查看到我们存储过程的状态

接下来存储过程做好之后

他是一个静态的对象

存在了我们的服务器上面

如果你想让它发挥作用的话

我们需要用call来进行一个调用

方法就是call存储过程名称

括号把参数列表一写

我们就可以实现实参和形参的一个传递

调用存储过程

那么最后一个存储过程如果不需要了

我们可以用drop procedure存储过程名称

进行一个存储过程的删除

那接下来我们来进入任务实施环节

我们来分析一下这个任务

需要画一个简单的流程图

实现开户时对卡号和金额的约束

也就说我们首先要做一个卡号的判断

卡号是否存在卡号如果存在

那么我们提示该卡号已经被注册

那如果卡号不存在

我们还要做一个判断看他的金额是否大于一

如果金额大于一那么开户成功数据可以实现插入

那么相反如果金额不大于1

那提示一下开户金额不能低于一元

也就是说我们用到了两层的两次的判断

那么实施代码我们就可以写出来了

首先作为存储过程需要给他变更一下结束符 delimter

用我们的两个$符号进行一个结束

那么存储过程结束之后

大家记得要把它再变更成我们的分号

那我们就可以创建存储过程了

create procedure

后面是我们要放的参数列表

在这个问题当中

我们涉及到了六个参数

其中五个是我们的输入参数

大家看都有一个in 的标识

还有一个是输出参数较接近

是我们的结果

这个前面标识了out通过in 和 out

大家就可以看到它们分别代表是输入参数和输出参数

所以在传递参数的时候需要对应上这个对应关系

接下来是存储过程体begin

begin下面要进行我们刚才所分析的流程图当中的判断了

If exist seelect cardID from cardinfo where cardID=cardID 1

那么这里面实现就是如果存在卡号的话

我该怎么办接下来

then set结果等于该卡号已经被注册

有一个提示性的结果出现

Else if如果说这个卡号没被注册

我还要再做个判断吧

balance小于1满足条件不

如果说她的balance小于1

那我还要做一个提示

then set jg等于开户金额不能低于一元

else相反

也就是说他开户金额也满足条件的情况下

else我要做什么

Begin end要做我的数据的真正的插入了

插入用到的语句就是insert into values

跟咱们前面要求的是一样的

你需要把你的字段列表和值列表一要匹配上

并且能做了一个set结果等于开户成功

也就是提示用户开卡成功了

那么所有的if都写完了

那么接下来我要按着endif进行结束

也就是选择分支结构我们要有个结尾

那整个存储过程结束之后

后面有个end

然后用我们俩个$符号进行一个结束

最后记得变更我们的结束符为分号

这样我们的存储过程就写完了

接下来看第二个子任务就要调用存储过程

刚刚咱们说了存储过程创建好之后

他作为一个对象放在我们的服务器上了

但是如果你想让它有效果

需要进行一个调用

用到我们的call进行调用

那前面咱们说了

通过流程图分析他有三个分支

所以我在调用的时候专门写了三个调用的语句

测试他的三个分支包括卡号已经存在

包括余额不足

包括开卡成功三个分支分别做了一个测试

测试完之后

大家注意

我们需要用select * from ucardinfo查看一下数据

看看我们前面做的是否有问题

第三将删除存储过程

那如果说这个存储过程不需要了

我要把它进删除很简单

drop procedure后面跟上存储过程的名称

createID就可以删除了

那如果说你要删除多个存储过程

直接在后面罗列名称

逗号隔开也可以实现

那么今天的拓展任务是员工管理数据库存储过程的创建

感谢大家的聆听

数据库技术应用课程列表:

学习情境一、银行存取款机数据库创建与管理

-模块1、数据库的基础知识

--1.1.1数据库设计-数据库的基本概念

--1.1.2数据管理的发展和数据库体系结构

--数据库的基础知识

-模块2、MYSQL介绍与安装

--MYSQL介绍与安装

--MYSQL介绍与安装

-模块3、银行存取款机数据库的创建与维护

--1.3数据库的创建与维护

--银行存取款机数据库的创建与维护

-模块4、银行存取款机数据库的设计

--1.4.1数据库的概念模型设计

--1.4.2数据库的数据模型设计

--1.4.3数据库的关系规范化

--银行存取款机数据库的设计

学习情境二、创建和管理银行存取款机数据表

-模块1、表的创建

--2.1表的创建

--任务实施:银行存取款机表的创建

--表的创建

-模块2、表的管理

--2.2表的管理

--任务实施:银行存取款机表的管理

--表的管理

-模块3、索引

--2.3索引

--任务实施:银行存取款机索引

--索引

-实践小课堂:宠物电商管理平台数据库和表的创建

--实践小课堂:宠物电商管理平台数据库和表的创建

学习情境三、银行存取款机数据操纵

-模块1、银行存取款机数据插入、修改和删除

--3.1.1数据插入

--任务实施:银行存取款机数据插入

--3.1.2数据修改和删除

--任务实施:银行存取款机数据修改和删除

--实践小课堂:宠物电商管理平台数据插入

--银行存取款机数据插入、修改和删除

-模块2、银行存取款机简单查询

--3.2.1简单查询

--任务实施:银行存取款机简单查询

--实践小课堂:宠物电商管理平台简单查询

--3.2.2统计查询

--任务实施:银行存取款机统计查询

--实践小课堂:宠物电商管理平台条件查询

--银行存取款机简单查询和统计查询

-模块3、银行存取款机连接查询

--3.3连接查询

--任务实施:银行存取款机连接查询

--银行存取款机连接查询

-模块4、银行存取款机子查询

--3.4子查询

--任务实施:银行存取款机子查询

--实践小课堂:宠物电商管理平台多表查询

--银行存取款机子查询

-模块5、银行存取款机分类汇总与排序

--3.5分类汇总与排序

--任务实施:银行存取款机分类汇总与排序

--实践小课堂:宠物电商管理平台分类汇总和排序

--银行存取款机分类汇总与排序

-模块6、银行存取款机视图

--3.6.1视图的创建与管理

--任务实施:银行存取款机视图的创建与管理

--3.6.2视图的更新

--任务实施:银行存取款机视图的更新

--实践小课堂:宠物电商管理平台视图

--银行存取款机视图

学习情境四、银行存取款机数据库编程

-模块1、银行存取款机存储过程

--4.1.1创建和执行存储过程

--任务实施:银行存取款机创建和执行存储过程

--实践小课堂:宠物电商管理平台存储过程

--4.1.2事务

--任务实施:银行存取款机事务

--实践小课堂:宠物电商管理平台存储函数

--银行存取款机存储过程

-模块2、银行存取款机触发器

--4.2.1INSERT触发器

--任务实施:银行存取款机INSERT触发器

--实践小课堂:宠物电商管理平台INSERT触发器

--4.2.2UPDATE触发器

--任务实施:银行存取款机UPDATE触发器

--实践小课堂:宠物电商管理平台UPDATE触发器

--4.2.3DELETE触发器

--任务实施:银行存取款机DELETE触发器

--实践小课堂:宠物电商管理平台DELETE触发器

--银行存取款机触发器

教学情境五、银行存取款机数据库安全性

-模块1、MYSQL用户管理

--模块1、MYSQL用户管理

--MYSQL用户管理

-模块2、MYSQL权限管理

--模块2、MYSQL权限管理

--MYSQL权限管理

-模块3、MYSQL数据库的锁机制

--MYSQL数据库的锁机制

--MYSQL数据库的锁机制

-模块4、MYSQL备份和恢复

--模块4、MYSQL备份和恢复

--MYSQL备份和恢复

4.1.1创建和执行存储过程笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。