210 likes | 356 Views
数据库原理与 SQL Server. 第 16 课 存储过程、触发器. 第 15 课 存储过程、触发器. 目标: 掌握存储过程的相关知识 了解游标的相关知识 掌握触发器的相关知识. 6.3 存储过程. 存放数据. 表 ( Table):. 数据库对象. 表间关系. 关系图 ( Diagram):. 虚拟表,只有结构没有数据. 视图 ( View):. 数据排序,提高查询速度. 索引 ( Index):. 存储过程 ( Stored Procedure ) :. 程序,减轻网络流量. 以表动作为前提的程序. 触发器 ( Trigger ) :.
E N D
数据库原理与SQL Server 第16课 存储过程、触发器
第15课 存储过程、触发器 目标: • 掌握存储过程的相关知识 • 了解游标的相关知识 • 掌握触发器的相关知识
6.3 存储过程 存放数据 表(Table): 数据库对象 表间关系 关系图(Diagram): 虚拟表,只有结构没有数据 视图(View): 数据排序,提高查询速度 索引(Index): 存储过程(Stored Procedure): 程序,减轻网络流量 以表动作为前提的程序 触发器(Trigger): 引例:按姓名查询手机号码
一、存储过程概述 概念:储存在服务器上的T-SQL程序,保存在数据库中 目的:减轻网络流量,提高执行效率 注意 存储过程与T-SQL程序的区别
二、创建存储过程 1. 使用SQL语句 2. 使用SQL-EM
使用SQL语句 语句格式: CREATE PROCEDURE <存储过程名> [@<局部变量名><数据类型>[,…n]] AS <T-SQL语句> 实例创建表n(class,num,man,woman),统计表s各班人数。 编写存储过程total_1,由表s统计数据插入表n。 实例编写存储过程p_1,由学生姓名查询学生基本信息。
使用SQL-EM SQL-EM→存储过程→右键→新建存储过程 实例 编写存储过程total_2,由表s统计数据插入表n。 实例 编写存储过程p_2,由学号、课程编号查询成绩。
三、执行存储过程 语句格式: EXEC[UTE] <存储过程名>[<参数值>[,…]] 实例 由表s统计数据插入表n 实例 查询李国的基本信息 实例 查询学号1001课程编号c001的成绩
四、查看和修改存储过程 SQL-EM→存储过程→右键→属性
五、删除存储过程 1. 使用SQL语句 语句格式: DROP PRODRUCE <存储过程名>[,…n] 2. 使用SQL-EM SQL-EM→存储过程→右键→删除
六、存储过程和游标 游标的概念:对查询到的记录需要做逐一处理,而 不是对整个记录集进行同一操作。 T-SQL游标: 用于服务器,最常用 游标的种类 API游标: 用于客户端与服务器的连接程序 客户游标: 用于客户端应用程序
使用游标 声明游标: DECLARE <游标名> CURSOR FOR <SELECT语句> 打开游标: OPEN <游标名> 读取游标: FETCH NEXT FROM <游标名> [INTO @<变量名>[,...n]] @@FETCH_STATUS=0 FETCH执行成功 关闭游标: CLOSE <游标名> 释放游标: DEALLOCATE <游标名> 实例查询学生学号、姓名、平均成绩,按平均分排名次,并显示名次。 实例编写存储过程p_3,用于按学生输出各门课程的成绩单。
6.4 触发器 存放数据 表(Table): 数据库对象 表间关系 关系图(Diagram): 虚拟表,只有结构没有数据 视图(View): 数据排序,提高查询速度 索引(Index): 存储过程(Stored Procedure): 程序,减轻网络流量 以表动作为前提的程序 触发器(Trigger):
一、触发器概述 当修改(插入、删除、修改)表s后,如何保证表n数据与表s数据的一致性。 引 入: 触发器是建立在表上的特殊的存储过程,当对该表进行插入、删除、修改操作后,将自动执行相应的insert、delete、update触发器。 概 念: 执行方式: ● insert(delete):对表插入(删除)记录时,将插入(删除)的记录放入inserted(deleted)表中,该表为一逻辑表(结构与原表相同),保存插入(删除)的记录,然后执行触发器指定的操作。 ●update:先delete,再insert。
二、创建触发器 1. 使用SQL-EM 2. 使用SQL语句
使用SQL-EM SQL-EM→表→右键→所有任务→管理触发器 实例在表s上创建DELETE 触发器,实现表s删除 数据时与表n间数据的一致性。 实例在表s上创建INSERT 触发器,实现表s插入 数据时与表n间数据的一致性。 函数ISNULL(n,0):n为null则n取0
使用SQL语句 语句格式: CREATE TRIGGER <触发器名> ON <表名> FOR INSERT| DELETE | UPDATE AS <T-SQL语句> 实例在表s上创建UPDATE触发器,实现表s修改数据时 与表n间数据的一致性。 注意:如果需要创建触发器,通常应同时创建INSERT、 DELETE和UPDATE才能保证数据的一致性
三、查看和修改触发器 SQL-EM→表→右键→所有任务→管理触发器
四、删除触发器 1. 使用SQL-EM SQL-EM→表→右键→所有任务→管理触发器 2. 使用SQL语句 语句格式:DROP TRIGGER <触发器名>[,…n]
作业 第六章 习题 7、8、9、10、11、12、13
实训 实验名称:创建存储过程、游标和触发器 目的要求:掌握SQL Server 2000中创建存储过程、游标和触发器的方法 操作步骤: ① 使用SQL-EM在数据库student中创建学生表的统计表,表名为“<班级>_<学号>_n”,包含列:class、char(20),num、smallint,man、smallint,woman、smallint。其中,class为主键。 ② 使用T-SQL语句编写一个存储过程,存储过程名为“<班级>_<学号>_total”,用于由学生表统计出数据插入统计表,并执行该存储过程。 ③ 使用T-SQL语句编写一个带参数的存储过程,存储过程名为“<班级>_<学号>_score”,用于按课程名称输出学生的成绩单,并执行该存储过程。 ④ 完成实例6-18。 ⑤使用SQL-EM在学生表上创建INSERT、DELETE和UPDATE触发器,用于维护学生表与统计表间数据的一致性。