资源简介 (共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--打开数据库CourseDBGODECLARE @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--打开数据库CourseDBGODECLARE @VAR_SName nchar(4),@VAR_SMajornchar(8),@VAR_SRcreditintSET @VAR_SName='王振兴'IF EXISTS (SELECT * FROM Student WHERE SName=@VAR_SName)--在IF条件中使用EXISTS来判断姓名为@VAR_SName的学生是否存在BEGIN--BEGIN表示语句序列的开始SELECT @VAR_SMajor=SMajor,@VAR_SRcredit=SRcreditFROM StudentWHERE SName=@VAR_SNamePRINT @VAR_SName+'的专业是:'+@VAR_SMajor+',已修学分:'+cast(@VAR_SRcredit as char(3))/*使用PRINT输出变量@VAR_SName值、@VAR_SMajor值及@VAR_SRcredit的转换值,并使用连字符“+”将变量和说明性的字符串'的专业是:'和',已修学分:'连接起来*/END--END表示语句序列的结束ELSEPRINT '没有找到相应的学生'3. 在CourseDB数据库中,根据设定学生的学号,得到学生的已修学分任务演示DUSE CourseDB--打开数据库CourseDBGODECLARE @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 ] }ASsql_statement。修改触发器:可以使用ALTER TRIGGER语句修改触发器,其基本语法如下:ALTER TRIGGER trigger_name ON { table | view } { FOR | AFTER | INSTEAD OF} {[ INSERT] [ , ] [ UPDATE ] [ , ] [ DELETE ] }ASsql_statement。任务准备删除触发器:可以使用DROP TRIGGER语句删除触发器,其基本语法如下:DROP TRIGGER tigger_name任务准备1. 创建触发器TG_AddStudent,用于在学生表中有数据添加时进行提示。任务演示USE CourseDBGOCREATE TRIGGER TG_AddStudent--使用CREATE TRIGGER来创建名为TG_AddStudent的触发器ON Student--使用ON指定该触发器的作用对象是数据表StudentAFTER INSERT--使用AFTER INSERT表明该触发器会在数据表上有INSERT操作时触发ASPRINT '成功添加学生信息'GOUSE CourseDBGOINSERT INTO Student(SID,SName,SMajor,SSex) VALUES('18050102','张海军','应用电子技术','男')执行触发器2. 创建触发器TG_DeleteStudent,用于在“Student”表中有数据删除时判断数据完整性(逻辑结构)任务演示USE CourseDBGOCREATE TRIGGER TG_DeleteStudentON StudentINSTEAD OF DELETE--使用INSTEAD OF DELETE来指定触发器在执行DELETE操作前就触发ASDECLARE @VAR_SIDchar(8)--定义变量@VAR_SID来保存将要删除的学生的学号SELECT @VAR_SID=SID FROM DELETED--从deleted系统临时表中获取将要删除的学生的学号IF (SELECT COUNT(*) FROM Study WHERE SID=@VAR_SID)>0--判断购买记录表Study中是否存在该学生的修课记录PRINT '不能删除该学生信息'ELSEBEGINDELETE FROM Student WHERE SID=@VAR_SIDPRINT '成功删除该学生信息'ENDGOUSE CourseDBGODELETE Student WHERE SID='18011101'执行触发器3. 修改CourseDB学生选课数据库中的TG_AddStudent触发器任务演示USE CourseDBGOALTER TRIGGER TG_AddStudentON StudentAFTER INSERTASPRINT '添加学生成功'4. 删除触发器任务演示USE CourseDBGODROP TRIGGER TG_AddStudent任务训练1)按照任务实施过程的要求完成各子任务并检查结果。2)在BookDB图书借阅数据库中,创建一个触发器,当图书表有数据删除时,根据借阅表来判断数据完整性并给出相应的提示。要求:对图书表执行图书删除时,判断借阅表中是否存在该图书。如果存在,则不删除该图书,并给出不允许删除的提示信息;如果不存在,则删除该图书,并给出删除成功的信息。 展开更多...... 收起↑ 资源预览