项目六事务、存储过程与触发器课件.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《项目六事务、存储过程与触发器课件.pptx》由会员分享,可在线阅读,更多相关《项目六事务、存储过程与触发器课件.pptx(107页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、项目六 事务、存储过程及触发器目 录任务十三 事务管理任务十四 存储过程的创建任务十五 存储过程的的使用任务十六 建立与使用触发器事务管理任务实施任务准备 了解事务的概念01 事务的概念01 事务的特性02 事务管理03任务十三 事务的提交02 事务的回滚03 事务的隔离级别04任务实施更改文字内容更改文字内容任务准备一、事务的概念任务十三1、事务是一个最小的不可再分的工作单元,通常一个事务对应一个完整的业务。(1)在SQL层面我们可以把事务理解为由多条SQL命令语句组成的、用以完成一个业务功能的共同体。(2事务是有边界的,为了识别事务的边界,必须用相应的机制来界定这个边界。2、事务也可以理解
2、为一种工作机制。(1)事务也称为事务机制。(2)MYISAM存储引擎不支持事务机制,INNODB支持事务机制。任务实施更改文字内容更改文字内容任务准备二、事务的特性任务十三1、原子性原子性是指一个事务必须被视为一个不可分割的最小工作单元,只有事务中所有对数据库的操作都执行成功,才算整个事务执行成功,事务中如果有任何一个SQL语句执行失败,已经执行成功的SQL语句也必须撤销,使数据库的状态退回到执行事务之前。2、一致性一致性是指事务将数据库从一种一致状态转变为下一种一致的状态。也就是说事务的执行不能破坏数据库的一致性。任务实施更改文字内容更改文字内容任务准备二、事务的特性任务十三3、隔离性隔离性
3、还可以称为并发控制、可串行化、锁等,当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。4、持久性事务一旦提交,其所做的修改就会永久保存到数据库中,即使数据库发生故障也不应该对其有任何影响。需要注意的是,事务的持久性只能从事务本身的角度来保证永久性,而一-些其他原因导致数据库发生的异常与事务的持久性是两回事。任务实施更改文字内容更改文字内容任务准备三、事务管理任务十三事务管理主要包括事务的开启、事务的回滚、事务的提交以及事务的隔离级别的设置等。任务实施更改文字内容任务准备子任务1 了解事务的概念任务十三1.前导知识所谓事务机制就
4、是针对数据库的一组操作,它可以由一条或多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句无法执行,那么所有的语句都不会执行。也就是说,事务中的语句要么都执行,要么都不执行。(2)在数据库中实施事务机制时,必须先开启事务,作为事务边界的界定。start transaction;(1)事务机制(3)开启事务的SQL命令语句任务实施更改文字内容任务准备子任务1 了解事务的概念任务十三1.前导知识(4)提交事务的语句具体如下:需要注意的是,在MySQL中直接书写的SQL语句都是自动提交的,而事务中的操作语句(即事务开启语句执行后,事务提交语句执行之前)都需要使用COMMIT语句手动
5、提交,只有事务提交后其中的操作才会长久生效。(5)回滚语句取消事务。具体语句如下:需要注意的是,ROLLBACK语句只能针对未提交的事务执行回滚操作,已提交的事务是不能回滚的。commit;rollback;任务实施更改文字内容任务准备子任务1 了解事务的概念任务十三2.任务内容在数据库TSGL中,运用事务机制完成借书。现有借阅者(借阅者证号:202093071025)到图书馆借阅一本图书(书籍编号:9787549341771)。此处要求借书时,需修改书籍的库存量。任务实施更改文字内容任务准备子任务1 了解事务的概念任务十三3.完成任务第一步,开启事务。start transaction;第二
6、步,向borrows表中插入一条记录。insert into borrows values(“202093071025”,”9787549341771”,20210830,20211030);第三步,修改books表的库存量。update books set book_num=book_num-1 where book_id=”9787549341771”;注意在修改注意在修改books表库存量之前表库存量之前和之后,分别查询这本书的库存和之后,分别查询这本书的库存量。量。注意,在此之后、提交语句执行之前执行的语句均属于此事务的范围。任务实施更改文字内容任务准备子任务1 了解事务的概念任务十三
7、3.完成任务第四步,事务的提交。commit;第五步,事务的回滚。ROLLBACK;执行回滚命令后,相应表中的数据并没有发生变化,说明事务提交后,其所做的修改就会永久保存在数据库中。所以从开启事务到事务的提交(或事务的回滚),才是一个完整的事务。任务实施更改文字内容任务准备子任务2 事务的提交任务十三1.前导知识事务的提交其实就是对事务中“命令的执行”进行确认,事务中的命令是指开启事务后、执行事务提交之前执行过的命令,在事务提交之前执行过的命令是可以用事务回滚命令撤销的,事务回滚使数据库恢复到事务开启之前的状态。因此,要真正执行事务中的命令,必须进行事务的提交。任务实施更改文字内容任务准备子任
8、务2 事务的提交任务十三2.任务内容(1)开启事务,向book_sort表插入一条记录。在事务提交之前先查询book_sort表,后执行回滚事务的命令,再查询book_sort表;(2)开启事务,向book_sort表插入一条记录。在事务提交之前先查询book_sort表,后执行事务的提交命令,再查询book_sort表;任务实施更改文字内容任务准备子任务2 事务的提交任务十三3.完成任务(1)开启事务,向book_sort表插入一条记录。在事务提交之前先查询book_sort表,后执行回滚事务的命令,再查询book_sort表;start transaction;insert into bo
9、ok_sort values(“IT05”,”信息技术-大数据”);select * from book_sort;rollback;select * from book_sort;任务实施更改文字内容任务准备子任务2 事务的提交任务十三3.完成任务(2)开启事务,向book_sort表插入一条记录。在事务提交之前先查询book_sort表,后执行事务的提交命令,再查询book_sort表;start transaction;insert into book_sort values(“IT05”,”信息技术-大数据”);select * from book_sort;commit;select
10、 * from book_sort;任务实施更改文字内容任务准备子任务3 事务的回滚任务十三1.前导知识在操作一个事务时,如果发现当前事务中的操作是不合理的,此时只要还没有提交事务,就可以通过回滚来取消当前事务,非事务中的命令不能通过事务回滚命令撤销。接下来就针对事务的回滚进行详细的讲解。事务的回滚命令是“ROLLBACK;”。任务实施更改文字内容任务准备子任务3 事务的回滚任务十三2.任务内容在TSGL数据库中完成以下操作。开启事务,删除book_sort表中的分类名称为“信息技术-大数据”的记录,对此事务执行事务回滚。任务实施更改文字内容任务准备子任务3 事务的回滚任务十三3.完成任务开启
11、事务,删除book_sort表中的分类名称为“信息技术-大数据”的记录,对此事务执行事务回滚。start transaction;delete from book_sort where sort_name=”信息技术-大数据”;select * from book_sort;rollback;select * from book_sort;任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三1.前导知识在MySQL中,事务有4种常用隔离级别,接下来将针对这4种隔离级别进行详细的讲解。(1)READ UNCOMMITTEDREAD UNCOMMITTED(读未提交)是事务中最低的级别,该
12、级别下的事务可以读取到另一个事务中未提交的数据,也被称为脏读(Dirty Read),这是相当危险的。由于该级别较低,在实际开发中避免不了任何错误情况的出现,所以一般很少使用。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三1.前导知识(2)READ COMMITTED大多数的数据库管理系统的默认隔离级别都是READ COMMITTED(读提交)(如Oracle) ,该级别下的事务只能读取其他事务已经提交的内容,可以避免脏读,但不能避免重复读和幻读的情况。重复读就是在事务内重复读取了别的线程已经提交的数据,但两次读取的结果不一致,原因是查询的过程中其他事务做了更新的操作。幻读是指在
13、同一事务内两次查询中数据条数不一致,原因是查询的过程中其他的事务做了添加操作。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三1.前导知识(3)REPEATABLE READREPEATABLE READ(可重复读)是MySQL默认的事务隔离级别,它可以避免脏读,不可重复读的问题,确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。该级别是可以避免幻读的。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三1.前导知识(4)SERIALIZABLESERIALIZABLE(可串行化)是事务的最高隔离级别,它会强制对事务进行排序,使之不会发生冲突,从而解决脏读、幻读,
14、重复读的问题。实际上,就是在每个读的数据行上加锁。这个级别,可能导致大量的超时现象和锁竞争,实际应用中很少使用。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三2.任务内容(1)查看和设置隔离级别(2)脏读级别的演示。(3)可串行化级别的演示。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三3.完成任务(1)查看和设置隔离级别select global.tx_isolation; #查看系统隔离级别select tx_isolation; #查看当前会话隔离级别查看隔离级别的命令语句如下:设置隔离级别的命令语句如下:set session transaction iso
15、lation level 隔离级别的关键字; #设置当前会话隔离级别set global transaction isolation level 隔离级别的关键字; #设置系统隔离级别任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三3.完成任务(2)脏读级别的演示。第一步,先将两个账户的隔离级别均设置为读未提交级别,即READ UNCOMMITTED。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三3.完成任务(2)脏读级别的演示。第二步,在两个账户环境中分别开启事务。在左侧界面中向book_sort表中插入一条记录,命令语句如下:insert into book_so
16、rt values(“IT06”,”信息技术-特联网”);在右侧界面中查询book_sort表,发现表中多了一条记录此时,由于左侧账户还未提交,所以右侧账户此时读取的信息是“脏数据”,此为“脏读”。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三3.完成任务(2)脏读级别的演示。第三步,左侧操作者发现有错误,在提交事务之前进行事务回滚,所以说右侧账户读到的数据是有问题的数据,不能用。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三3.完成任务(3)可串行化级别的演示。第一步,先将两个账户环境下的隔离级别都设置为可串行化级别。第二步,分别在两个账户环境中开启事务,在左侧命
17、令提示符中查询book_sort表,先不提交;在右侧命令提示符中输入命令语句向book_sort表插入一条记录,出现等待的状况。效果如上图所示。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三3.完成任务(3)可串行化级别的演示。第三步,由于左侧账户的事务还未提交,右侧界面对应账户等待时间过长,系统给出出错提示。效果如下图所示。任务实施更改文字内容任务准备子任务4 事务的隔离级别任务十三3.完成任务(3)可串行化级别的演示。第四步,在左侧界面中,将当前事务提交并进入行待命状态,然后在右侧再进行插入记录,此时插入命令立即执行。效果如右图所示。更改文字内容小结任务十三任务十三 创建与管
18、理数据库1、事务的概念2、事务的特性3、事务的提交和回滚4、事务的隔离级别创建存储过程任务实施任务准备 创建存储过程0103 存储过程的概念01 创建存储过程的方法02任务十四 存储过程的主体03 变量的使用02 游标的使用03 流程控制的使用04任务实施更改文字内容更改文字内容任务准备一、存储过程的概念任务十四当对数据库进行一系列复杂操作时,我们可以将这些复杂操作打包成一个模块(有的程序设计语言中称为函数),以便重复使用,大大减少数据库应用系统开发人员的工作量。这样的模块在MySQL中就是存储过程。2、存储过程的主要优点存储过程经编译后存储在数据库服务器端,可以直接调用从而提高了SQL语句的
19、执行效率。存储过程可以用结构化语句(PL/SQL)编写,可以完成较复杂的判断、运算及重复操作。1、存储过程的定义(1)执行效率高:(2)灵活性:任务实施更改文字内容更改文字内容任务准备一、存储过程的概念任务十四2、存储过程的主要优点(3)逻辑独立:用户在程序中调用存储过程,存储过程能把数据同用户程序隔离开来,其优点是当数据表结构变化时,可以随时修改存储过程,不用修改程序源代码。(4)安全性:存储过程被当作一种对象存储在数据库服务器端,因此它也被作为一种安全机制来充分利用,系统管理员通过设置存储过程的访问权限,从而实现相应数据的访问权限限制,避免了用户对数据表的直接的访问,保证了数据的安全性。任
20、务实施更改文字内容更改文字内容任务准备一、存储过程的概念任务十四2、存储过程的主要优点(5)降低网络流量:当在客户机上调用该存储过程时,网络中传送的只是该调用语句,而不是这一功能的全部代码,从而大大降低了网络负载。任务实施更改文字内容更改文字内容任务准备二、创建存储过程的方法任务十四1、创建存储过程的基本语法格式CREATE PROCEDURE sp name (proc_parameter)sp_body语法格式中各部分说明如下:(1)CREATE PROCEDURE为用来创建存储过程的关键字;(2)sp_name为存储过程的名称,存储过程的名字必须符合MySQL的命名规则;任务实施更改文字
21、内容更改文字内容任务准备二、创建存储过程的方法任务十四1、创建存储过程的基本语法格式如下:语法格式中各部分说明如下:(3)proc_parameter为存储过程的参数列表,此部分为可选项,即可以没有参数。单个参数的形式如下:IN|OUT |INOUT param_name param_type上述参数的形式中,IN表示输人参数,OUT表示输出参数,INOUT表示既可以输人也可以输出; param_name表示参数名称;type表示参数的类型,它可以是MySQL数据库中的任意类型;如果有多个参数,则用逗号隔开。(4)sp_body是存储过程的主体部分,即命令语句的集合,可以用BEGINEND来表
22、示命令语句的开始和结束。任务实施更改文字内容更改文字内容任务准备三、存储过程的主体任务十四1. PL/SQL的变量变量是指在程序运行过程中其值可以改变的量。(1)用户变量用户可以在PL/SQL中使用自己定义的变量,这样的变量称为用户变量。用户变量作为数据的载体,按照按名存取的机制,它可以实现数据的传递。用户变量在使用前必须定义和初始化,如果使用没有初始化的变量,其值为Null。定义和初始化一个用户变量可以使用SET语句,其语句格式如下:SET = ,=,;任务实施更改文字内容更改文字内容任务准备三、存储过程的主体任务十四1. PL/SQL的变量(2)系统变量服务器维护两种变量,全局变量影响服务
23、器整体操作,会话变量影响具体客户端连接的操作。系统变量一般都以“”为前缀,例如global.tx_isolation返回系统的隔离级别。某些特定的系统变量可以省略“符号,例如Current_ Date. Current_ Time、 和Current_ User等。任务实施更改文字内容更改文字内容任务准备三、存储过程的主体任务十四1. PL/SQL的变量(3)局部变量在语句块(BEGIN 到End之间)中定义的变量为局部变量,局部变量可以保存特定类型数据,其有效作用范围为存储过程和自定义函数的语句块中,在语句块结束以后,局部变量就失效了。MySQL的局部变量必须先声明后使用。使用DECLARE
24、语句声明局部变量,局部变量的声明语法格式如下:DECLARE DEFAULT ;任务实施更改文字内容更改文字内容任务准备三、存储过程的主体任务十四2、PL/SQL的运算符及表达式(1)运算符l 算术运算符算术运算符用于对操作数执行数学运算,操作数可以是任何数值类型。MySQL中的算术运算符有:+ (加)、 - (减)、*(乘)、 / (除)、% (取模)。l 赋值运算符“=”是MySQL语言中的赋值运算符,可以将表达式的值赋给一个变量。任务实施更改文字内容更改文字内容任务准备三、存储过程的主体任务十四2、PL/SQL的运算符及表达式(1)运算符l 关系运算符关系运算符用于对两个表达式进行比较,
25、数字以浮点值进行比较,字符串以不区分大小写的方式进行比较,表达式成立返回1,表达式不成立则返回0。MySQL中的比较运算符有: = (等于)、 (大于)、 = (大于等于)、= (小于等于)、 (不等于)、! = (不等于)、 (相等或都等于空)。任务实施更改文字内容更改文字内容任务准备三、存储过程的主体任务十四2、PL/SQL的运算符及表达式(1)运算符l 逻辑运算符逻辑运算符用于对某些条件进行测试,以返回条件表达式的真假。MySQL中的逻辑运算符有: And (与)、Or (或)、Not (非)。l 一元运算符一元运算符对一个操作数执行运算,该操作数可以是任何一种数据类型。MySQL中的一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目六 事务、存储过程与触发器课件 项目 事务 存储 过程 触发器 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内