6.3T-SQL编程和触发器 课件(共27张PPT)《 数据库技术及应用(SQL Server 2019)》同步教学(机械工业出版社)

资源下载
  1. 二一教育资源

6.3T-SQL编程和触发器 课件(共27张PPT)《 数据库技术及应用(SQL Server 2019)》同步教学(机械工业出版社)

资源简介

(共27张PPT)
6.3T-SQL编程和触发器
Software
任务1 T-SQL编程
提纲
简单T-SQL编程
带逻辑结构的T-SQL编程
提纲
任务描述
1.简单T-SQL编程
在CourseDB学生选课数据库中,根据设定学生的学号,得到学生的已修学分。
2.带逻辑结构的数据库编程
在CourseDB学生选课数据库中,根据设定的学生姓名判断该学生是否存在,若不存在给出提示信息,若存在输出学生的姓名、专业及已修学分。
任务准备
变量:
全局变量采用@@开头,由SQL Server系统提供并赋值,用户不能建立全局变量,也不能给全局变量赋值。
局部变量是可由用户定义。局部变量用DECLARE语句声明,初始值为NULL,由SET或SELECT赋值,只能用在声明该变量的过程实体中,其名称采用@符号开头。
语法为:DECLARE @变量名称 变量类型
表达式和运算符:
表达式是由变量、常量、运算符以及函数等组成的语句。
运算符是一种符号,用来指定要在一个或多个表达式中执行的操作。最基本的运算符有:算术运算符、赋值运算符以及比较运算符等。
任务准备
流程控制语句:
BEGIN…END。用来定义语句块,让语句块作为一个整体执行。
类似于{ }
IF…ELSE。用来根据条件执行相应的语句或语句序列。
WHILE。用来重复执行语句或语句序列。
任务准备
使用变量来存储输入输出数据所带来的好处 ?
运算符与表达式有哪些,各自的作用是什么
变量的赋值有哪几种方式?
思考
勇于探索、克服困难:张小龙带着团队,在广州南方通信大厦10楼写代码,一帮人睡行军床、吸二手烟,困了就做俯卧撑提神,经常凌晨四点下班,经过他们的努力奋战,开发出了跨时代的产品——微信。
1. 在CourseDB数据库中,根据设定学生的学号,得到学生的已修学分
任务演示
USE CourseDB
--打开数据库CourseDB
GO
DECLARE @VAR_SID char(8),@VAR_SRcredit int
--定义@VAR_SID与@VAR_SRcredit两个局部变量
SET @VAR_SID='18020202'
--使用SET对变量@VAR_SID赋值
SELECT @VAR_SRcredit=SRcredit from Student WHERE SID=@VAR_SID
--使用SELECT在完成查询的同时对变量@VAR_SRcredit赋值
PRINT @VAR_SRcredit
--使用PRINT将变量@VAR_SRcredit的值输出
提示:
在T-SQL编程中,可以使用“--”和“/*…*/”两种方式来对代码进行注释。“--”用来进行单行注释,而“/*…*/”则用来对多行代码进行注释。
2. 在CourseDB数据库中,根据设定的学生姓名判断该学生是否存在,若不存在给出提示信息,若存在输出学生的姓名、专业及已修学分
任务演示
USE CourseDB
--打开数据库CourseDB
GO
DECLARE @VAR_SName nchar(4),@VAR_SMajornchar(8),@VAR_SRcreditint
SET @VAR_SName='王振兴'
IF EXISTS (SELECT * FROM Student WHERE SName=@VAR_SName)
--在IF条件中使用EXISTS来判断姓名为@VAR_SName的学生是否存在
BEGIN
--BEGIN表示语句序列的开始
SELECT @VAR_SMajor=SMajor,@VAR_SRcredit=SRcreditFROM Student
WHERE SName=@VAR_SName
PRINT @VAR_SName+'的专业是:'+@VAR_SMajor+',已修学分:'+cast(@VAR_SRcredit as char(3))
/*使用PRINT输出变量@VAR_SName值、@VAR_SMajor值及@VAR_SRcredit的转换值,并使用连字符“+”将变量和说明性的字符串'的专业是:'和',已修学分:'连接起来*/
END
--END表示语句序列的结束
ELSE
PRINT '没有找到相应的学生'
3. 在CourseDB数据库中,根据设定学生的学号,得到学生的已修学分
任务演示
DUSE CourseDB
--打开数据库CourseDB
GO
DECLARE @VAR_SID char(8),@VAR_SRcredit int
--定义@VAR_SID与@VAR_SRcredit两个局部变量
SET @VAR_SID='18020202'
--使用SET对变量@VAR_SID赋值
SELECT @VAR_SRcredit=SRcredit from Student WHERE SID=@VAR_SID
--使用SELECT在完成查询的同时对变量@VAR_SRcredit赋值
PRINT @VAR_SRcredit
--使用PRINT将变量@VAR_SRcredit的值输出
提示:
在T-SQL编程中,可以使用“--”和“/*…*/”两种方式来对代码进行注释。“--”用来进行单行注释,而“/*…*/”则用来对多行代码进行注释。
任务训练
1)按照任务实施过程的要求完成各子任务并检查结果。
2)在BookDB图书借阅数据库中,根据输入读者的RID,获取和显示读者的RName、RDep。要求采用变量来存储输入输出数据。
3)在BookDB图书借阅数据库中,根据输入图书的BID,计算该图书的库存量。要求:如果该图书没有库存了,则给出消息提示“该图书没有库存了”;如果该图书还有库存,则获取和显示该图书的BName,并计算和显示其库存量。
Software
任务2 创建与激活
触发器
提纲
创建与激活触发器
查看与维护触发器
提纲
1. 创建与激活触发器
1)简单触发器
在CourseDB学生选课数据库中,创建触发器TG_AddStudent,用于在学生表中有数据添加时进行提示。
2)带逻辑结构的触发器
在CourseDB学生选课数据库中,创建触发器TG_DeleteStudent,用于在“Student”表中有数据删除时判断数据完整性。
任务描述
2. 查看与维护触发器
1)查看CourseDB学生选课数据库中的触发器TG_AddStudent的信息。
2)修改触发器TG_AddStudent,将插入成功的返回信息改为“添加学生成功”。
3)删除CourseDB学生选课数据库中的TG_AddStudent触发器。
任务描述
触发器:
是一种特殊类型的存储过程,是一个在修改指定表中数据时执行的存储过程。
强化约束
跟踪变化
级联运行
调用存储过程
返回自定义错误信息
任务准备
计算机病毒通常以时间为触发条件、也利用系统漏洞,或击键和鼠标时触发,我们时刻要做好病毒防护工作。
创建触发器:
在SQL Server中,可以使用CREATE TRIGGER命令创建触发器,其基本语法如下:
任务准备
CREATE TRIGGER trigger_name ON { table | view } { FOR | AFTER | INSTEAD OF} {[ INSERT] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
AS
sql_statement。
修改触发器:
可以使用ALTER TRIGGER语句修改触发器,其基本语法如下:
ALTER TRIGGER trigger_name ON { table | view } { FOR | AFTER | INSTEAD OF} {[ INSERT] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
AS
sql_statement。
任务准备
删除触发器:
可以使用DROP TRIGGER语句删除触发器,其基本语法如下:
DROP TRIGGER tigger_name
任务准备
1. 创建触发器TG_AddStudent,用于在学生表中有数据添加时进行提示。
任务演示
USE CourseDB
GO
CREATE TRIGGER TG_AddStudent
--使用CREATE TRIGGER来创建名为TG_AddStudent的触发器
ON Student
--使用ON指定该触发器的作用对象是数据表Student
AFTER INSERT
--使用AFTER INSERT表明该触发器会在数据表上有INSERT操作时触发
AS
PRINT '成功添加学生信息'
GO
USE CourseDB
GO
INSERT INTO Student(SID,SName,SMajor,SSex) VALUES('18050102','张海军','应用电子技术','男')
执行触发器
2. 创建触发器TG_DeleteStudent,用于在“Student”表中有数据删除时判断数据完整性(逻辑结构)
任务演示
USE CourseDB
GO
CREATE TRIGGER TG_DeleteStudent
ON Student
INSTEAD OF DELETE
--使用INSTEAD OF DELETE来指定触发器在执行DELETE操作前就触发
AS
DECLARE @VAR_SIDchar(8)
--定义变量@VAR_SID来保存将要删除的学生的学号
SELECT @VAR_SID=SID FROM DELETED
--从deleted系统临时表中获取将要删除的学生的学号
IF (SELECT COUNT(*) FROM Study WHERE SID=@VAR_SID)>0
--判断购买记录表Study中是否存在该学生的修课记录
PRINT '不能删除该学生信息'
ELSE
BEGIN
DELETE FROM Student WHERE SID=@VAR_SID
PRINT '成功删除该学生信息'
END
GO
USE CourseDB
GO
DELETE Student WHERE SID='18011101'
执行触发器
3. 修改CourseDB学生选课数据库中的TG_AddStudent触发器
任务演示
USE CourseDB
GO
ALTER TRIGGER TG_AddStudent
ON Student
AFTER INSERT
AS
PRINT '添加学生成功'
4. 删除触发器
任务演示
USE CourseDB
GO
DROP TRIGGER TG_AddStudent
任务训练
1)按照任务实施过程的要求完成各子任务并检查结果。
2)在BookDB图书借阅数据库中,创建一个触发器,当图书表有数据删除时,根据借阅表来判断数据完整性并给出相应的提示。要求:对图书表执行图书删除时,判断借阅表中是否存在该图书。如果存在,则不删除该图书,并给出不允许删除的提示信息;如果不存在,则删除该图书,并给出删除成功的信息。

展开更多......

收起↑

资源预览