- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实训3:事务和视图
实训3:事务和视图
实训目的
1、理解事务的概念。
2、会运用T-SQL语句创建事务。
2、会运用T-SQL语句创建并使用视图。
二、实训工具及设备
实训软件:SQL Server
实训设备:安装Windows系统计算机一台。
三、实训预备知识
1、事务
在数据库对数据进行插入(insert)、删除(delete)、修改(update)时,必须要用到一条或一组insert、delete、update语句来完成一件事时,如果这一条或一组语句在执行过程中因意外故障中断语句的执行,就会出现数据插入、删除、修改一半的情况,即半途而废。
例如,银行转帐问题:如下图3-1所示。
图3-1:账户信息表
当李四要转帐给张三499元时,至少需要两步,即李四账户余额减少,张三账户余额增加。在查询分析器中编写T-SQL语句实现转帐,如下图3-2所示。
图3-2:转帐失败
重新查询帐户信息,如下图3-3所示。
图3-3:转帐失败后的账户信息表
李四的钱没有减少,张三的钱却增加了499?在上面的SQL语句中,李四的balance违反了约束条件(ck-balance1)即余额不能少于1元。遗憾的是,前面发生了错误,但是后面的语句并没有中断执行,修改张三帐户余额的update语句继续执行。可见这两步必须是一个整体,如果执行到一半的时候失败,则将撤消前面所做的修改。事务提供了这么一种机制来处理上面的问题,事务是指一个工作单元,该单元可以包含多个步骤(多条delete、update、insert语句)来完成所需的任务。一个事务作为一个整体,要么都执行,要么都不执行。
SQL使用下列语句来管理事务。
开始事务:BWGIN TRANSACTION。
提交事务:COMMIT TRANSACTION。
回滚事务:ROLLBACK TRANSACTION。
使用事务,就必须要知道事务执行过程中有没有发生SQL语句错误,从而选择是提交事务还是回滚事务。在SQL SERVER中全局变量@@ERROR是用来判断当前SQL语句执行是否有错误,若有错误则返回零值。
下面我们通过ATM中的银行卡信息表(cardInfo)来应用事务解决转帐的问题。
代码清单3-1:应用事务处理转帐
use ATMDB
go
begin transaction /*–-开始事务--*/
declare @errorSum int
set @errorSum=0 /*–-初始化为零,即无错误--*/
/*--转帐开始--*/
update cardinfo set balance=balance-499
from cardInfo,customerInfo
where customerName=李四
set @errorSum=@errorSum+@@error /*–-累计是否有错误--*/
update cardinfo set balance=balance+499
from cardInfo,customerInfo
where customerName=张三
set @errorSum=@errorSum+@@error /*–-累计是否有错误--*/
/*--根据是否有错误,确定事务是提交还是回滚--*/
if @errorSum0
begin
print 交易失败
rollback transaction /*–-交易失败,回滚事务--*/
end
else
begin
print 交易成功
commit transaction /*–-交易成功,提交事务,写入硬盘--*/
end
go
运行结果如下图3-3所示。
图3-3:创建事务后的转帐信息
查看ATM中表的数据,如下图3-4所示。
图3-4:事务回滚后的帐户信息
2、视图
视图是根据用户的观点所定义的数据结构,它是由一个或多个数据表(视图)导出的虚拟表。使用试视图的原因有:
视图可以屏蔽数据的复杂性,简化用户对数据库的操作。比如,查询数据一般涉及到多张表的连接操作,对于这些复杂的连接,可以将它们定义为视图,这样在每一次执行相同的查询时,不必重新编写这些复杂的连接语句,只要一条简单的查询视图语句就可以实现相同的功能。可见,视图向用户屏蔽了表与表之间复杂的连接操作,简化了对用户操作数据的要求。
视图可以使用户只关心他们感兴趣的某些特定数据,而那些不需要的数据则不在视图中显示出来。视图可以让不同的用户以不同的方式看到不同或相同的数据集。
视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限。通过视图用户只能查看和修改他们所能看到的数据。
在SQL中,创建视图使用CREATE VIEW语句:
CREATE VIEW 视图名 [(列名1, ……, 列名n)]
AS
SELECT语句
代码清单
文档评论(0)