- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《SQ高级
SQL Server
子查询
在SQL语言中,一个SELECT…FROM…WHERE语句称为一个查询块,将一个查询块嵌套在另一个查询块的WHERE子句中的查询称为子查询。子查询分为嵌套子查询和相关子查询两种。
嵌套子查询的求解方法是由里向外处理,即每个子查询在其上一级查询处理之前求解,子查询的结果作为其父查询的查询条件。子查询只执行一次,且可以单独执行;
嵌套子查询使得可以用一系列简单查询构成复杂的查询,从而明显增强了SQL的查询处理能力。
带有比较运算符的嵌套子查询(要求子查询返回的值为一行一列)
In的嵌套子查询(子查询返回的值为多行一列)
EXISTS的嵌套子查询:如果子查询的结果非空,即记录条数1条以上,则EXISTS (子查询)将返回真(true),否则返回假(false)。
相关子查询:子查询依靠外部查询获得值。这意味着子查询是重复执行的,为外部查询可能选择的每一行均执行一次。子查询不能单独执行。
视图
视图的概念
视图是另一种查看数据库中一个或多个表中的数据的方法。视图基于实际的数据表(基表)或别的视图而创建。视图是一种虚拟表,也就是说,视图中并不存储实际的数据。任何对视图的操作,都会转换为到基表的操作。
视图的用途:
筛选表中的行
防止未经许可的用户访问敏感数据
将多个物理数据表抽象为一个逻辑数据表
创建视图
语法:
CREATE VIEW view_name
AS
SELECT语句
对视图的编辑:
因为视图中的数据来源基表,因此对视图进行增删改操作时,其命令中只能包含一个基表的数据。因此通过视图来修改数据有许多的限制,所以在实际开发中一般视图仅作查询使用。
事务
事务的概念
事务是一种机制、一个操作序列,它包含了一组数据库操作命令,并且所有的命令作为一个整体一起向系统提交或者撤消操作请求,即这一组数据库命令要么都执行,要么都不执行,因此事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。它特别适用于多用户同时操作的数据库系统。例如,航空公司的订票系统、银行、保险公司以及证券交易系统等。
事务的种类:
自动提交事务(默认模式):将每条单独的T-SQL语句视为一个事务。
显式事务:由用户管理的事务
T-SQL使用下列语句来管理事务:
开始事务:BEGIN TRANSACTION
提交事务:COMMIT TRANSACTION
回滚事务:ROLLBACK TRANSACTION
使用显式事务:
--创建变量来对错误编号进行累计
declare @error int
set @error = 0
--开启事务
begin tran
--执行相应的SQL操作
--每执行一个操作,都需要对错误编号进行累加
set @error = @error + @@error
--执行操作
set @error = @error + @@error
--所有命令执行完后,
--如果累加的错误编号等于0,表示所有的命令都执行成功,提交事务
--否则回滚事务
if (@error = 0)
commit tran
else
rollback tran
存储过程
存储过程概述
存储过程是一组T-SQL语句,存成一定名称,作为一个工作单元执行。存储过程可以从另一存储过程中调用,从客户机应用程序中调用或者从T-SQL命令中调用,进行预定的操作。
存储过程有如下的优点:
允许模块化的程序设计:
存储过程一旦创建完成并存储于数据库中,即可在我们的程序中反复调用。另外,通过将业务逻辑和策略编写在存储过程中,不仅可以让不同的应用程序共享,也可以要求所有的客户端去使用相同的存储过程来达到数据访问与更新的一致性。
更快的执行速度:
当执行批处理和T-SQL程序代码时,SQL Server必须先检查语法是否正确,接着加以编译、优化,然后再执行它,因此如果我们要执行的T-SQL代码非常庞大,那么执行前的处理操作是会耗掉一些时间的。对于存储过程而言,当它们被创建时就已经检索过语法的正确性、编译,并加以优化,因此当执行存储过程时,可以立即直接执行,自然速度会比较快;
存储过程在它第一次被执行后会保留在内存中,因此以后的调用并不需要再将存储过程从磁盘中加载。
有效降低网络流量:
假设某一项操作需要数百行的T-SQL代码来完成,如果我们是从客户端将这些代码传送到后端的SQL Server来执行,则在网络上传输的将是程序程序代码的数千或数万个字符;而如果我们事先将这些代码编写成一个存储过程,则只需从客户端调用该存储过程的名称即可执行它,它时在网络上传输的仅仅是存储过程名称的几个字符。
较好的安全机制:
如果我们不希望某一位用户有权限直接去访问某个数据表,但是又必须要求他针对该表执行特
文档评论(0)