全国计算机等级考试三级数据库技术(八)

第8章_数据库后台编程技术

考点分析

◆在考试中一般情况下会出现在选择题,填空题,设计题部分。
◆常考知识点有:
1.掌握创建、执行和删除存储过程的语法格式
2.掌握创建和调用标量函数及熟悉表值函数的创建和调用
3.掌握触发器的创建的语法格式(常考:后触发型触发器创建)
4.熟悉游标组成,理解声明、打开、提取、关闭游标的语法格式

8.1 存储过程

一、基本概念
1.存储过程:实际上是存储在数据库中供所有用户程序调用的子程序。
2.方法:使用T-SQL语言编写代码时,可以用两种方法存储和执行代码。内容如下所示:
01.一种是在客户端存储代码,通过客户端的程序或SQL命令向数据库管理系统发出对数据库的操作请求,由数据库管理系统将操作结果返回给用户
程序。
02.另外一种是以子程序的形式将程序模块存储在数据库中,供有权限的用户通过调用反复执行。

3.存储过程与其他程序设计语言中的子程序很类似,因为存储过程可以:
01.接收输入参数并以输出参数的形式将多个值返回给调用过程。
02.包含执行数据库操作(包括调用其他存储过程)的编程语句。
03.向调用过程返回状态值,以表明执行成功或失败(以及失败原因).

4.使用存储过程的好处如下图:
01.允许模块化程序设计
只需创建一次存储过程并将其存储在数据库中。 以后就可在应用程序中多次调用该存储过程。存储过程可由在数据库编程方面有专长的人员创建.并可独立于程序源化码而单独修改。
02.改善性能
系统在创建存储过程时对其进行分析和优化,并在第一次执行时进行语法检查和编译。编译好的代码存储在内存中.以后再执行此存储过程时只需执行内存中的化码即可。
03.减少网络流量
一个需要数百行SQL代码完成的操作现在只需要一条执行存储过程的代码即可实现,因此不再需要在网络中传送大段的SQL代码。
04增强应用程序的安全性
一方面参数化存储过程有助于保护应用程序不受攻击。同时可以通过授予用户执行存储过程的权限.而避免对存储过程的非法使用。
二、创建、执行和删除存储过程
1.创建存储过程
创建储存过程
参数说明
示例1
示例22.执行存储过程
执行存储过程
参数说明
示例1
示例2
参数的传递方式
示例3
示例4

3.删除存储过程
删除存储过程

8.2 用户定义函数

一、创建和调用标量函数
用户定义函数与编程语言中的函数类似,其结构与存储过程类似,但函数必须有一个RETURN子句 ,用于返回函数值。
函数说明要指定函数名、结果值的类型,以及参数类型等,
SQL Server 2008支持两类用户定义函数:标量函数和表值函数,具体内容如下图所示:
在这里插入图片描述

1.定义标量函数
定义标量函数
各参数说明

2.调用标量函数
调用标量函数

二、创建和调用表值函数
1.创建内联表值函数
创建内联表值函数

2.调用内联表值函数
调用内联表值函数

三、创建和调用多语句表值函数
多语句表值函数的功能是视图和存储过程的组合,可以利用多语句表值函数返回一个表,表中的内容可由复杂的逻辑和多条SQL语句构建(类似于存储过程)。可以在SELECT语句的FROM子句中使用多语句表值函数(同视图)。
1.创建多语句表值函数
创建多语句表值函数
示例

2.调用多语句表值函数
示例

3.删除用户自定义函数
在这里插入图片描述

8.3 触发器

一、基本概念
1.触发器是一种特殊的存储过程,其特殊性在于它不需要由用户来接调用,而是在对表中的数据进行UPDATE、INSERT或DELETE操作时自动触发执行的。触发器通常用于保证业务规则和数据完整性。其主要优点是用户可以用编程的方法来实现复杂的处理逻辑和商业规则,增强了数据完整性约束的功能。
2.触发器通常用在如下所示场合:
01.完成比CHECK约束更复杂的数据约束。
02.为保证数据库性能而维护的非规范化数据。
03.可实现复杂的商业规则。触发器可使业务的处理任务自动进行。
04.触发器也可以评估数据修改前后的表状态,井根据其差异采取对策。
3.SQL Server 2008支持的三种类型触发器: DML、DDL和登录触发器。
01.DML
如果用户要通过数据操作语言(DML)事件编辑数据。则执行DML触发器。DML事件是针对表或视图的INSERT、UPDATE或DELETE语句。
02.DDL
DDL触发器用于响应各种数据定义语言(DDL)事件.这些事件主要对应T-SQL中的CREATE、 ALTER和DROP语句.以及执行类似DDL操作的某些系统存储过程。
03.登录触发器
登录触发器在遇到LOGON事件时触发. LOGON事件是在建立用户会话时引发的。

二、创建触发器
1.
创建触发器

2.创建触发器时,需要注意以下几点:。
01.在一个表上可以建立多个名称不同、类型各异的触发器,每个触发器可由所有三个操作来引发。对于AFTER型的触发器,可以在同一种操作上建立多个触发器;对于INSTEAD OF型的触发器,在同一种操作上只能建立一个触发器。
02.大部分T-SQL语句都可用在触发器中.但也有一些限制。例如.所有的建立和更改数据库以及数据库对象的语句、所有的DROP语句都不允许在触发器中使用。
03.在触发器定义中,可以使用IF UPDATE子句来测试INSERT和UPDATE语句是否对指定字段有影响。如果将一个值赋给指定字段或更改了指定字段,则这个子句就为真。
04.通常不要在触发器中返回任何结果。
3.在触发器语句中使用的两个特殊临时工作表,内容如下:
在这里插入图片描述

4.创建后触发型触发器
示例1.1
示例1.2

触发器与引发触发器执行的操作共同构成了一个事务,事务的开始是引发触发器执行的操作,事务的结束是触发器的结束。由于AFTER型的触发器在执行时引发触发器执行的操作已执行完了,因此在触发器中应使ROLLBACK撤销不正确的操作,这里的ROLLBACK实际是回滚到引发触发器执行的操作之前的状态。
如果不同表中的列之间存在取值约束关系,则只能用触发器实现,不能用CHECK约束实现,因为CHECK约束只能实现同一个表中列之间的取值约束。
5.创建前触发型触发器
创建前触发型触发器

6.删除触发器
删除触发器

8.4 游标

一、游标的组成
1.游标包括如下两部分内容:
01.游标结果集:指定义游标的SELECT语句返回的结果的集合。
02.游标当前行指针:指向该结果集中的某行的指针。
2.游标示意图如下所示:
游标的组成图示

3.游标具有以下特点,如图所示。
01.允许定位结果集中的特定行。
02.允许从结果集的当前位置检素一行或多行。
03.支持对结果集中当前行的数据进行修改。
04.为由其他用户对显示在结果集中的数据所做的更改提供不同级别的可见性支持。

二、使用游标
1.使用游标的典型过程如下图所示
游标的典型使用过程

2.声明
声明
参数说明

3.打开游标
打开游标

4.提取数据
提取数据
参数说明
@@FETCH_STATUS的一些注意事项
在这里插入图片描述

5.关闭游标
关闭游标

6.释放游标
释放游标
三、游标示例
示例

猜你喜欢

转载自blog.csdn.net/weixin_47288291/article/details/123586072