ImageVerifierCode 换一换
格式:PPT , 页数:23 ,大小:718.52KB ,
资源ID:1113616      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-1113616.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第八章-事务和视图.ppt)为本站会员(无敌)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

第八章-事务和视图.ppt

1、第八章,事务和视图,2,回顾,下列T-SQL语句有错吗?实现了什么功能? SELECT * FROM stuInfo WHERE stuNo IN (SELECT * FROM stuMarks) 上述语句可以用下面的连接替换吗? SELECT * FROM stuInfo INNER JOIN stuMarks ON stuInfo.stuNo=stuMarks.stuNo下列语句实现了什么功能?SELECT * FROM stuInfo WHERE stuNo NOT IN (SELECT stuNo FROM stuMarks),SELECT stuNo FROM stuMarks,可

2、以,查看没有参加考试的学员,3,目标,理解事务的概念掌握如何创建事务掌握如何创建并使用视图,4,为什么需要事务,银行转账,例如,银行转账问题: 假定资金从账户A转到账户B,至少需要两步:账户A的资金减少然后账户B的资金相应增加,账户A,账户B,5,假定张三的账户直接转账1000元到李四的账户,为什么需要事务,CREATE TABLE bank( customerName CHAR(10), -顾客姓名 currentMoney MONEY -当前余额)GOALTER TABLE bank ADD CONSTRAINT CK_currentMoney CHECK(currentMoney=1)G

3、OINSERT INTO bank(customerName,currentMoney) VALUES(张三,1000)INSERT INTO bank(customerName,currentMoney) VALUES(李四,1),创建账户表,存放用户的账户信息,添加约束:根据银行规定,账户余额不能少于1元,否则视为销户,张三开户,开户金额为1000元 ;李四开户,开户金额1元,6,为什么需要事务,目前两个账户的余额总和为:1000+1=1001元,7,为什么需要事务,模拟实现转账 : 从张三的账户转账1000元到李四的账户,/*-转账测试:张三转账1000元给李四-*/-我们可能会这样这样

4、编写语句-张三的账户少1000元,李四的账户多1000元UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=张三UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四GO-再次查看转账后的结果。 SELECT * FROM bankGO,请问:执行转账语句后,张三、李四的账户余额为多少?,张三的账户没有减少 但李四的账户却多了1000元 100010012001元 总额多出了1000元!,8,为什么需要事务,-张三的账户减少1000元

5、,李四的账户增加1000元UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=张三UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四GO,错误原因分析:,UPDATE语句违反约束:余额=1元,执行失败,所以张三还是1000元,继续往下执行:执行成功,所以李四变为1001元,如何解决呢?使用事务,9,什么是事务,事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作这些操作作为一个整体一起向系统提交,要么都执行、要么都

6、不执行 事务是一个不可分割的工作逻辑单元,转账过程就是一个事务。它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任一条出现错误,则整个转账业务也应取消,两个账户中的余额应恢复到原来的数据,从而确保转账前和转账后的余额不变,即都是1001元。,10,如何创建事务,T-SQL使用下列语句来管理事务:开始事务:BEGIN TRANSACTION提交事务:COMMIT TRANSACTION回滚(撤销)事务:ROLLBACK TRANSACTION一旦事务提交或回滚,则事务结束。判断某条语句执行是否出错:使用全局变量ERROR;ERROR只能判断当前一条T-SQL语句执行是否有错,为了

7、判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计; 如: SET errorSum=errorSum+error,11,事务的特性,事务必须具备以下四个属性,简称ACID 属性:原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行一致性(Consistency):当事务完成时,数据必须处于一致状态隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久

8、性,12,关键语句讲解BEGIN TRANSACTION /*-定义变量,用于累计事务执行过程中的错误-*/DECLARE errorSum INT SET errorSum=0 -初始化为0,即无错误/*-转账:张三的账户少1000元,李四的账户多1000元*/UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=张三SET errorSum=errorSum+errorUPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四SET e

9、rrorSum=errorSum+error -累计是否有错误,如何创建事务,使用事务解决银行转账问题,开始事务(指定事务从此处开始,后续的T-SQL语句都是一个整体),累计是否有错误,13,IF errorSum0 -如果有错误 BEGIN print 交易失败,回滚事务 ROLLBACK TRANSACTION END ELSE BEGIN print 交易成功,提交事务,写入硬盘,永久的保存 COMMIT TRANSACTION ENDGOprint 查看转账事务后的余额SELECT * FROM bank GO,如何创建事务,根据是否有错误,确定事务是提交还是撤销,如果有错,则回滚操作

10、,事务结束,如果成功,则提交操作,事务结束,14,如何创建事务,转账事务前,转账事务过程中,转账事务结束后,演示:转账1000,转账失败的情况,15,如何创建事务,转账事务前,转账事务过程中,转账事务结束后,演示:转账800,转账成功的情况,16,什么是视图,教员需要的视图:方便查看学员的成绩,班主任需要的视图:方便查看学员的档案,17,什么是视图,视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上视图中并不存放数据,而是存放在视图所引用的原始表(基表)中同一张原始表,根据不同用户的不同需求,可以创建不同的视图,18,什么是视图,视图的用途筛选表中

11、的行防止未经许可的用户访问敏感数据降低数据库的复杂程度将多个物理数据表抽象为一个逻辑数据表,19,如何创建视图,演示使用企业管理器创建视图,20,如何创建视图,使用T-SQL语句创建视图的语法,CREATE VIEW view_name AS ,21,如何创建视图,IF EXISTS (SELECT * FROM sysobjects WHERE name = view_stuInfo_stuMarks) DROP VIEW view_stuInfo_stuMarksGOCREATE VIEW view_stuInfo_stuMarks AS SELECT 姓名=stuName,学号=stuI

12、nfo.stuNo, 笔试成绩 =writtenExam, 机试成绩=labExam, 平均分=(writtenExam+labExam)/2 FROM stuInfo LEFT JOIN stuMarks ON stuInfo.stuNo=stuMarks.stuNoGOSELECT * FROM view_stuInfo_stuMarks,检测是否存在,创建视图,使用视图,删除视图,22,总结,数据库事务具有如下特性:原子性一致性隔离性持久性以上四个特性也称为ACID特性。Transact-SQL使用下列语句来管理事务:BEGIN TRANSACTIONCOMMIT TRANSACTIONROLLBACK TRANSACTION视图是一张虚拟表,可以方便不同用户的查询,提高数据的安全性,筛选特定的数据行,新华软件 助您 高薪就业,加 油 !,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报