SQLServer2005中的十个最重要的T-SQL增强功能

上传人:ca****in 文档编号:245101428 上传时间:2024-10-07 格式:PPT 页数:45 大小:699KB
返回 下载 相关 举报
SQLServer2005中的十个最重要的T-SQL增强功能_第1页
第1页 / 共45页
SQLServer2005中的十个最重要的T-SQL增强功能_第2页
第2页 / 共45页
SQLServer2005中的十个最重要的T-SQL增强功能_第3页
第3页 / 共45页
点击查看更多>>
资源描述
Click to edit Title Slide,Click to edit Master text styles,Second level,Third level,SQL Server2005,中的十个最重要的,T-SQL,增强功能,讲座的总体内容,:,关于,Microsoft,SQL Server,TM,2005 Transact-SQL,数据库语言中的十个最重要的增强功能的总体介绍和概括,通过清晰的,简捷的景象分析,实例介绍和演示来详细的总结和解析每一个功能的特性和运用,参加讲座的前提条件,最好具备关于,Microsoft Transact SQL,数据库语言的相关知识和相应的工作经验,Level 200,讲座议程,新型超大数据类型,Large-Value Data Types,先进的错误处理,Error Handling,通用表表达式,Common Table Expressions,DDL,触发器,DDL Triggers,新的排序函数,Ranking Functions,新的关系运算符,PIVOT/UNPIVOT/APPLY,新的,结果集,运算符,EXCEPT and INTERSECT,OUTPUT,在,DML,中的特别运用,TOP,增强功能,T-SQL,和,CLR,的集成,大容量存储数据类型,关于,SQL Server2000,任何超过,8KB,的大容量数据,(,文档,图片,音像,),必须 要存储在,text,ntext,和,image,数据类型中,任何超过,8KB,数据面临非常有限的操作功能,SQL Server2005,提供的,MAX,定义符,增强并且延伸了,varchar,nvarchar,和,varbinary,传统数据类型的存储能力,varchar(max,),nvarchar(max,),和,varbinary(max,),从此成为标准,T_SQL,的大容量存储数据类型,最多可存储到场,2GB,的大容量数据,大容量存储数据类型,(,继续,),关于大或小容量数据类型的统一的编程模式,对比,Comparisons,连接,Concatenation,变量,Variables,参数,Parameters,触发器,Triggers,集合,Aggregates,排序和索引,Index Included Columns,当小容量数据增长并且超越,8K,极限时,整个过度过程十分平滑和简捷,通过,.,WRITE,(,expression,Offset,Length,),可对大小容量数据实行局部或正体的直接更改,对于小于,8K,的数据,相比,text,ntext,和,image,存取效率明显提高,建议取代对,text,ntext,和,image,的应用,大容量存储数据类型,实例演示,CREATE TABLE MyPublications,(PublicationID,int,Abstract,nvarchar(max),Publication,varbinary(max),);,UPDATE My,Publications,SET,Abstract,.WRITE(N,author,20,6,),WHERE,Publication,ID,=,1;,Use.WRITE(expression,Offset,Length)to,update,the,word,writer,(Offset=20,Length=,6,),with,author,i,n the,Abstract,column,关于错误处理的提高,在,SQL Server2000,ERROR,返回最后一个执行的,T-SQL,语句的错误代码,ERROR,的值会随着每一个,T-SQL,语句而被更新,在,SQL Server2005,中的丰富的异常处理框架,TRYCATCH,配置,提供捕获所有,SQL SERVER,异常或错误的功能,可以捕获和处理过去会导致批处理终止的错误,从而阻止,批处理,的中断,提供处理和登录异常或错误的功能,当错误发生时,阻止,T-SQL,交易环境的丢失,可以对错误的具体内容进行读取,TRYCATCH,语法和定义,任何在,TRY,模块中产生的错误会将控制的流程转移到,CATCH,模块中,TRYCATCH,配置是可以被包含和兼容的,BEGIN TRY,sql_statement,|,statement_block,END TRY,BEGIN CATCH,sql_statement,|,statement_block,END CATCH,;,TRYCATCH,(,继续,),可处理所有付值给,ERROR,的,T-SQL,运行过程中的错误,T-SQL,语句中断错误,T-SQL,水平中断错误,T-SQL,批处理中断错误,T-SQL,交易中断错误,不处理以下的情况,:,任何严重性在,0-10,范围的警告和报告性的信息,任何严重性在,20-25,范围的中断数据库连接的错误,注意事项,KILL,语句,RAISERROR,可以用来自行生成错误,控制流程会转移到最接近的,CATCH,模块中,错误信息的各类函数,错误信息可通过运用以下函数而在,CATCH,模块中被获取,ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_LINE(),ERROR_PROCEDURE(),ERROR_MESSAGE(),交易信息,任何交易中断的错误都会最终导致成一个未成功交易,XACT_STATE(),总是返回任何交易的状态,(1,0,-1),错误处理,实例演示,BEGIN TRY,-Divide-by-zero error shifts control flow to the CATCH block,SELECT 1/0;,END TRY,BEGIN CATCH,-Retrieve error information,SELECT,ERROR_NUMBER(),AS,ErrNumber,ERROR_SEVERITY(),AS,ErrSeverity,ERROR_STATE(),AS,ErrState,ERROR_PROCEDURE(),AS,ErrProc,ERROR_LINE(),AS,ErrLine,ERROR_MESSAGE(),AS,ErrMessage,;,END CATCH,;,ErrNumber,ErrSeverity,ErrState,ErrProc,ErrLine,ErrMessage,8134,16,1,NULL,3,Divide by zero error encountered.,错误处理,实例演示,(,继续,),USE,AdventureWorks,;,GO,CREATE PROCEDURE,usp_GetErrorInfo,AS,SELECT,ERROR_NUMBER(),AS,ErrNumber,ERROR_SEVERITY(),AS,ErrSeverity,ERROR_STATE(),as,ErrState,ERROR_LINE(),as,ErrLine,ERROR_PROCEDURE(),as,ErrProc,ERROR_MESSAGE(),as,ErrMessage,;,GO,BEGIN TRY,BEGIN TRANSACTION;,-Generate a constraint violation error,DELETE FROM,Production.Product,WHERE,ProductID,=980;,COMMIT TRANSACTION;,END TRY,BEGIN CATCH,EXECUTE,usp_GetErrorInfo,;,IF,XACT_STATE(),0,ROLLBACK TRANSACTION;,END CATCH,;,通用表表达式样,(CTE),通用表表达式(,CTE,)是一个可以由定义语句引用的临时表命名的结果集,;,可视为类似于视图和派生表混合功能的改进版本,它可以被定义在任何一个,SELECT,INSERT,UPDATE,DELETE,或,CREATE VIEW,的,T-SQL,语句中,它可以被自己引用并在查询中多次被引用,用途,:,递归查询,替代那些不需要存储在元数据中的,视图,聚合派生表生成的表列,可以在同一个,T-SQL,语句,中多次引用结果集,通用表表达式样,(CTE),语法和定义,WITH,子句和,SELECT/INSERT/DELETE/UPDATE,结合在一起形成一个单独的,T-SQL,语句,在一个单独的,T-SQL,语句中,可以有多个,CTE,被定义在一个单独的,WITH,子句里,WITH(),AS,(,),SELECT*,FROM,通用表表达式样,(CTE),实例演示,WITH,mid_cte,AS,(,SELECT(,MAX(value,),MIN(value,)/2)AS,midval,FROM Invoices,),SELECT,CASE,WHEN value,mid_cte.midval,THEN 0,ELSE 1,END AS half,Invoices.*,FROM Invoices,mid_cte,ORDER BY half;,通用表表达式样,(CTE),和,递归查询,任何一个引用它自己的,CTE,可以被认为是递归的,包含一个固定成员和递归成员,;,递归成员可以被反复调用,递归查询会直到,递归成员不在返回行时才会结止,WITH(),AS,(,-Anchor member is defined,UNION ALL,-Recursive member is defined,-referencing,cte_alias,),SELECT*,FROM,通用表表达式样,(CTE),和递归查询,实例演示,-Returns all employees reporting to Employee with,EmployeeID,=109,WITH,EmpCTE,(EmployeeID,ManagerID,Title),AS,(,SELECT,EmployeeID,ManagerID,Title,FROM HumanResources.Employee,WHERE EmployeeID=,109,UNION ALL,SELECT,E,.EmployeeID,E,.ManagerID,E,.Title,FROM HumanResources.Employee AS,E,JOIN,EmpCTE,AS M,ON,E,.ManagerID=M.EmployeeID,),SELECT*FROM,EmpCTE,DDL,触发器,允许为所有发生的,T-SQL,的数据定义语言,(DDL),事件定义触发器,DDL,触发器可以被定义在,:,单个,DDL,语句,:,CREATE_TABLE,ALTER_PROCEDURE,DROP_LOGIN,etc,一组语句,:,DDL_DATABASE_LEVEL_EVENTS,DDL_DATABASE_SECURITY_EVENTS,etc,DDL,触发器可被规划在数据库和服务器的范围内,EventData,(),函数,在,DDL,触发器内部,可以通过访问,eventdata,(),函数获得与激发该触发器的事件有关的数据。该,eventdata,(),函数返回有关事件的,xml,数据。,DDL,触发器,实例演示,CREATE TRIGGER,trg_disallow_create_table,ON,DATABASE,FOR,CREATE_TABLE,AS,PRINT CREATE TABLE Issued.;,SELECT,EVENTDATA(),.value,(/EVENT_INSTANCE/TSQLCommand/CommandText)1,nvarchar(max);,RAISERROR(New tables cannot be created in this database.,16,1);,ROLLBACK
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!