资源描述
单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,2022/12/31,#,微信公众号:陈西设计之家,微信公众号:陈西设计之家,数据库应用教程,2016,目录,数据库概述,模块,01,CONTENTS,基础知识篇,表和表中数据的操作,模块,02,数据完整性,模块,03,索引和视图,模块,04,SQL,程序设计,模块,05,存储过程和触发器,模块,06,目录,数据库创建,实训,01,CONTENTS,上机实训篇,使用代码创建数据库,实训,02,分离和附加数据库,实训,03,使用窗口方式创建及修改表,实训,04,使用代码方式创建及修改表,实训,05,使用窗口方式对表中数据进行操作,实训,06,目录,使用代码对表中数据进行操作,实训,07,CONTENTS,上机实训篇,数据完整性,实训,08,索引和视图,实训,09,简单查询操作,实训,10,查询子句操作,实训,11,存储过程与触发器操作,实训,12,模块,6,存储过程和触发器,6.1,存储过程,6.2,触发器,6.3,小结,6.4,习题,学习要点,存储过程。,触发器。,6.1,存 储 过 程,存储过程,是一种数据库对象,它将执行计划存储在数据库的服务器中,将一些固定的操作集中在一起交给,SQL Server,数据库服务器来完成,以实现某个任务,用户通过指定存储过程的名字并给出参数来执行它。存储过程可以实现表的查询操作,表中数据的添加、修改和删除操作,以及其他复杂数据处理操作,理论上讲,其可以实现任何功能。存储过程类似于,Excel,中的函数,可以将要实现的功能定义在存储过程中,通过存储过程名来调用,以实现特定的功能。,6.1,存 储 过 程,主要存储在,MASTER,数据库中并以“,SP_”,为前缀,是从系统表中获取信息,为系统管理员管理,SQL Server,提供支持。,(,1,)系统类型,由用户创建并能完成某一特定功能的存储过程。,(,2,)用户自定义类型,存储过程分为,6.1,存 储 过 程,6.1.1,创建存储过程,语法格式如下。,其中,参数为变量名、变量类型及长度、,OUTPUT,。,CREATE PROCEDURE,存储过程名,参数,AS,SQL,语句,6.1,存 储 过 程,6.1.1,创建存储过程,注意:,当有多个变量定义时,各变量之间要用逗号隔开。使用,OUTPUT,关键字,则存储过程在退出时可将该参数的当前值返回至调用程序。若要用变量保存参数值以便在调用程序中使用,则调用程序必须在执行存储过程时使用,OUTPUT,关键字。对于,TEXT,类型不能使用,OUTPUT,。,6.1,存 储 过 程,6.1.1,创建存储过程,【,例,6.1】,创建存储过程,实现两数相加,并输出最终结果。,CREATE PROCEDURE CCGC,A TINYINT,,,B TINYINT,,,C INT OUTPUT,AS,SELECT C=A+B,6.1,存 储 过 程,6.1.2,调用存储过程,语法格式如下。,其中,使用,OUTPUT,关键字,则显示返回参数的值。,【,例,6.2】,在,【,例,6.1】,的基础上,通过调用存储过程实现两数相加并显示结果。,显示结果为:,330,。,存储过程名参数值,OUTPUT,DECLARE X INT,CCGC 120,,,210,,,X OUTPUT,SELECT,结果为:,=X,6.1,存 储 过 程,6.1.2,调用存储过程,【例6.3】,比较两数的大小,大的数减1,小的数加1。,执行:,GC3,5,,结果如下。,CREATE PROCEDURE GC,X TINYINT,Y TINYINT,AS,IF XY,BEGIN,SET X=X-1,SET Y=Y+1,END,ELSE,BEGIN,SET X=X+1,SET Y=Y-1,END,SELECT X,Y,6.1,存 储 过 程,6.1.2,调用存储过程,【,例,6.4】,创建存储过程,要求按指定班级找出姓名和成绩。,CREATE PROCEDURE CJ,X CHAR(10),AS,SELECT,会计,数据库,电子商务概论,FROM,成绩表,WHERE,学号,=X,执行:CJ2017127101,结果如下。,6.1,存 储 过 程,6.1.3,修改存储过程,语法格式如下。,【,例,6.5】,将,CCGC,存储过程内容修改为查询学生表中的所有数据。,ALTER PROCEDURE,存储过程名,参数,AS,SQL,语句,ALTER PROCEDURE CCGC,AS,SLECT*FROM,学生表,6.1,存 储 过 程,6.1.4,删除存储过程,语法格式如下。,DROP PROCEDURE,存储过程名,6.2,触发器,触发器是一种特殊的存储过程,主要通过事件进行触发而被执行,而存储过程可以通过存储过程名而被直接调用。它能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。触发器通过,UPDATE,、,INSERT,、,DELETE,三个事件触发操作。,触发器根据触发操作的先后顺序分为,AFTER,和,INSTEAD OF,两种类型。,(,1,),AFTER,触发器。,AFTER,触发器只有执行某一操作,(INSERT,、,UPDATE,、,DELETE),之后才能被触发,且只能在表上定义。,(,2,),INSTEAD OF,触发器。,INSTEAD OF,触发器并不执行所定义的操作,(INSERT,、,UPDATE,、,DELETE),而仅执行触发器本身。,6.2,触发器,6.2.1,创建触发器,语法格式如下。,注意:,对于,DELETE,、,INSERT,、,UPDATE,,至少要指定其中一项。,CREATE TRIGGER 触发器名,ON 表名 或 视图名,AFTER 或 INSTEAD OF DELETE 或,INSERT 或,UPDATE,AS,SQL 语句,6.2,触发器,6.2.1,创建触发器,【,例,6.6】,创建触发器,如果对学生表进行了修改、插入、删除操作,则显示此表的数据。,CREATE TRIGGER CFQ,ON,学生表,AFTER UPDATE,INSERT,DELETE,AS SELECT*FROM,学生表,【,例,6.7】,创建触发器,如果试图对学生表进行修改、插入、删除操作,则显示此表的数据,但并不执行修改、插入和删除操作。,CREATE TRIGGER CFQ,ON,学生表,INSTEAD OF UPDATE,INSERT,DELETE,AS SELECT*FROM,学生表,6.2,触发器,6.2.2,修改触发器,语法格式如下。,ALTER TRIGGER,触发器名,ON,表名 或 视图名,AFTER,或,INSTEAD OF,DELETE,或,INSERT,或,UPDATE,AS,SQL,语句,6.2,触发器,6.2.2,修改触发器,【,例,6.8】,修改触发器,CFQ,,当进行更新、插入、删除操作时,查询学生表中的所有数据。,ALTER TRIGGER CFQ,ON,学生表,AFTERUPDATE,INSERT,DELETE,AS,SELECT*FROM,学生表,6.2,触发器,6.2.3,删除触发器,语法格式如下。,注意:,触发器是与表融合在一起的,当删除表时,与表相关的触发器将自动被删除。,DROP TRIGGER,触发器名,小 结,6.3,小结,本模块首先介绍了存储过程的概论及作用;然后对存储过程的创建、调用、修改和删除的语法格式进行了举例说明;接着对触发器的原理、类型及作用进行了介绍,并通过实例予以说明。学习本模块时,应着重掌握存储过程和触发器的原理、创建和使用方法。,6.4,习题,1.,创建学生表,见表,6-1,。,表6,-,1习题1表,6.4,习题,2.,根据学生表创建存储过程,CK,,要求根据学生姓名查询其年龄和性别。,3.,在第,2,题的基础上,修改存储过程,要求根据学生姓名查询其平时表现情况。,4.,创建触发器,CF1,,要求在向学生表中添加了数据后,显示表中所有数据。,5.,创建触发器,CF2,,要求在对学生表修改了相关数据后,显示表中所有数据。,6.,创建触发器,CF3,,要求在对学生表删除了数据后,显示表中所有数据。,7.,创建触发器,KW1,,要求在试图修改学生表中数据时,显示表中所有数据。,8.,创建触发器,KW1,,要求在试图添加或修改学生表中数据时,显示表中所有数据。,谢谢观看,Thank You For Watching,
展开阅读全文