文档详情

数据库自与定义函数事务锁 .ppt

发布:2017-09-29约1.26万字共58页下载文档
文本预览下载声明
SQL Server 2005 数据库管理与开发教程 第9章 SQL Server 2005高级开发 本章主要介绍SQL Server 2005的高级应用,包括用户自定义函数、实现交叉表查询、事务处理以及锁。 通过本章的学习,读者可以创建和管理用户自定义函数,可以使用PIVOT、UNPIVOT以及CASE实现交叉表查询,并了解事务处理机制和锁,应用事务和锁优化对数据的访问。 9.1 用户自定义函数 SQL Server 2005还可以根据用户需要来自定义函数,以便用在允许使用系统函数的任何地方。 9.1.1 创建用户自定义函数 9.1.2 使用T-SQL语言创建用户自定义函数 1、创建自定义函数 利用Transact-SQL创建函数的语法如下: create function 函数名(@parameter 变量类型 [,@parameter 变量类型 ]) returns参数 AS begin 命令行或程序块 End 函数可以有0个或若干个输入参数,但必须有返回值,returns后面就是设置函数的返回值类型。 用户自定义函数为标量值函数或表值函数。 如果returns子句指定了一种标量数据类型,则函数为标量值函数;如果returns子句指定TABLE,则函数为表值函数。 根据函数主体的定义方式,表值函数可分为内联函数和多语句函数。 3、调用自定义标量函数 Transact-SQL调用函数的语法格式如下: Print dbo.函数([实参]) 或 select dbo.函数([实参]) dbo:是系统自带的一个公共用户名。 9.1.3 修改、删除用户自定义函数 1.修改自定义函数 利用Transact-SQL修改函数的语法如下: alter function 函数名(@parameter 变量类型 [,@parameter 变量类型 ]) returns参数as begin 命令行或程序块 End 2.修改自定义函数 3.查看自定义函数 4.删除自定义函数 删除自定义函数的Transact-SQL语法如下: Drop function 函数名 9.2 使用SQL Server 2005实现交叉表查询 9.2.1使用PIVOT和UNPIVOT实现交叉表查询 PIVOT和UNPIVOT运算符是SQL Server 2005新增的功能。 通过PIVOT和UNPIVOT就完全可以实现交叉表的查询,用PIVOT和UNPIVOT编写更简单,更易于理解。 PIVOT和UNPIVOT的语法如下: [ FROM { table_source } [ ,...n ] ] table_source ::= {  table_or_view_name [ [ AS ] table_alias ]  pivoted_table | unpivoted_table } pivoted_table ::=table_source PIVOT pivot_clause table_alias pivot_clause ::=( aggregate_function ( value_column )  FOR pivot_column   IN ( column_list 例如:图9.3所示的商品表就是一个典型的交叉表,其中“数量”和“月份”可以继续添加。 但是,这种格式在进行数据表存储的时候并不容易管理。 1.用PIVOT举例 例9-2】 使用PIVOT运算符实现交叉表查询。 SQL语句如下: 2.用UNPIVOT举例 UNPIVOT是PIVOT的逆操作。 假设图2.71所示的结果集存储在结果表temp1中,图2.72所示的结果集存储在结果表temp2中。 【例9-3】 使用UNPIVOT运算符实现交叉表查询。 9.2.2 CASE实现交叉表查询 利用CASE语句可以返回多个可能结果的表达式。 CASE具有简单CASE和CASE查询两种函数格式。 下面介绍简单CASE语句的语法。 【例9-4】 使用CASE语句实现交叉表查询。 SQL语句如下:实现的过程如图9.14所示 9.3 事 务 处 理 事务的概念及特性 事务提供了一种机制、是一个操作序列,它包含了一组数据库操作命令,并且所有的命令作为一个整体一起向系统提交或撤消操作请求 事务是作为单个逻辑工作单元执行的一系列操作 事务的四个特性: 原子性(Atomicity):事务能确保把对多个数据修改作为一个单元来处理,也就是原子操作。 一致性(Consistency):当事务完成时,数据必须处于一致状态 隔
显示全部
相似文档