习题
1.存储过程的作用是什么?为什么利用存储过程可以提高数据的操作效率?
答:(1)允许模块化程序设计
(2)改善性能
(3)减少网络流量
(4)可作为安全机制使用
因为系统对存储过程是预编译的。

2.在定义存储过程的语句中是否可以包含数据的增、删、改语句?
答:可以。

3.用户和存储过程之间如何传递数据?
答:可通过输入、输出参数。或者

4.存储过程的参数有几种形式?
答:有输入和输出两种。

5.触发器的作用是什么? 前触发和后触发的主要区别是什么?
答:实现复杂的处理逻辑和商业规则,增强了数据完整性约束的功能。
前触发器是在引发触发器执行的操作之前先执行触发器;后触发器是在引发触发器执行的操作执行完后再执行触发器。

6.插入操作产生的临时工作表叫什么?它存放的是什么数据?
答:inserted,存放新插入的数据。

7.删除操作产生的临时工作表叫什么?它存放的是什么数据?
答:deleted,存放被删除的数据。

8.更改操作产生的两个临时工作表叫什么?其结构分别是什么,它们分别存放的是什么数据?
答:inserted和deleted,结构同定义触发器的表,分别存放更新前和更新后的数据。

上机练习
1.利用第11章建立的students数据库以及Student、Coures、SC表,创建满足下述要求的存储过程,并查看存储过程的执行结果。
(1)查询每个学生的修课总学分,要求列出学生学号及总学分。
create proc p1
as
select sno,SUM(credit) as 总学分
from SC
group by sno

(2)查询学生的学号、姓名、修的课程号、课程名、课程学分,将学生所在的系作为输入参数,执行此存储过程,并分别指定一些不同的输入参数值。
create proc p2
@dept varchar(20) = ‘计算机系’
as
select s.sno,sname,c.cno,cname,credit
from Student s join SC on s.Sno=SC.Sno
join Course c on c.Cno=SC.Cno
where Sdept = @dept
执行示例1:EXEC P2
执行示例2:EXEC P2 ‘通信工程系’

(3)查询指定系的男生人数,其中系为输入参数,人数用输出参数返回。
create proc p3
@dept varchar(20),@rs int output
as
select @rs = COUNT(*) from Student
where Sdept = @dept and Ssex = ‘男’

(4)查询考试平均成绩超过指定分值的学生学号和平均成绩。
create proc p4
@x int
as
select sno,avg(grade) from sc
group by sno
having avg(grade) > @x

(5)查询查询指定系的学生中,选课门数最多的学生的选课门数和平均成绩,要求系为输入参数,选课门数和平均成绩用输出参数返回。
create proc p5
@dept varchar(30),@cnt int output,@avg int output
as
select top 1 @cnt = count() ,@avg = avg(grade)
from sc join student s on s.sno = sc.sno
where sdept = @dept
group by s.sno
order by count(
) desc

(6)删除指定学生的指定课程的修课记录,其中学号和课程号为输入参数。
create proc p6
@sno char(7),@cno char(10)
as
delete from SC where Sno = @sno and cno = @cno

(7)修改指定课程的开课学期。输入参数为:课程号和修改后的开课学期,开课学期的默认值为2。如果指定的开课学期不在1~8范围内,则不进行修改。
create proc p7
@cno char(10) , @new_semester int = 2
as
if @new_semester between 1 and 8
update course set semester = @new_semester
where cno = @cno
3.修改第1题(1)的存储过程,使之能够查询指定系中,每个学生选课总门数、总学分和考试平均成绩。
alter proc p1
@dept varchar(30)
as
select s.sno,count(*) 选课总门数,SUM(credit) as 总学分,
Avg(grade) 考试平均成绩
from SC join student s on s.sno = SC.sno
group by s.sno

4.利用第11章建立的students数据库以及Student、Coures、SC表,创建满足如下要求的触发器,并检测触发器的功效。
(1)限制考试成绩必须在0~100范围内。
create trigger tri1 on sc after insert,update
as
if exists(select * from inserted
where grade not between 0 and 100)
rollback

(2)限制学生所在系的取值必须在{计算机系,信息系,物理系,数学系}范围内。
create trigger tri2 on student after insert,update
as
if exists(select * from student where sdept not in
(‘计算机系’,‘信息系’,‘物理系’,‘数学系’))
Rollback
(3)限制学生的选课总门数不能超过8门。
create trigger tri4 on sc after insert
as
if exists(select * from sc
where sno in (select sno from inserted)
group by sno
having count(*) > 8 )
rollback
(4)限制不能删除考试成绩不及格学生的考试记录。
create trigger tri4 on sc after delete
as
if exists(select * from deleted where grade < 60 )
rollback
5.利用11.3节创建的工作表和职工表,定义满足如下要求的触发器,并检测触发器的功效。
(1)限制职工的基本工资和浮动工资之和必须大于等于2000。
create trigger tri4 on 职工表 after insert,update
as
if exists(select * from inserted where (基本工资 + 浮动工资 ) <2000 )
Rollback

(2)限制工作表中最高工资不能低于最低工资的1.5倍。
create trigger tri5 on 工作表 after insert,update
as
if exists(select * from inserted where 最高工资 < 最低工资*1.5 )
Rollback

(3)限制不能删除基本工资低于1500的职工。
create trigger tri6 on 职工表 after delete
as
if exists(select * from deleted where 基本工资 < 1500 )
Rollback

《数据库原理与应用》(第三版)第11章 存储过程和触发器 基础 习题参考答案相关推荐

  1. 《数据库原理与应用》(第三版)第9章 事务与并发控制 基础 习题参考答案

    1.试说明事务的概念及四个特征. 答:原子性.隔离性.一致性.持久性. 2.事务处理模型有哪两种? 答:T-SQL事务处理模型.T-SQL事务处理模型. 3.在数据库中为什么要有并发控制? 答:为避免 ...

  2. 《数据库原理与应用》(第三版) 第7章 索引和视图 基础 习题参考答案

    1.索引的作用是什么? 答:索引可以加快数据的查询效率. 2.索引分为哪几种类型?分别是什么?它们的主要区别是什么? 答:分为聚集索引和非聚集索引两种.聚集索引会对数据进行物理排序,非聚集索引不对数据 ...

  3. 《数据库原理与应用》(第三版) 第4章SQL Server 2012基础 习题参考答案

    1.安装SQL Server 2012对硬盘及内存的要求分别是什么? 答:SQL Server 2012实际硬盘空间需求取决于系统配置和您决定安装的功能,一般应确保系统驱动器中是否有至少 6.0 GB ...

  4. 《数据库原理与应用》(第三版)第12章 函数和游标 基础 习题参考答案

    1.SQL Server 2012提供的日期和时间函数有哪些? 答:getdate.dateadd.datediff.datename.day.month.year 2.SQL Server 2012 ...

  5. 《数据库原理与应用》(第三版) 第 6 章 数据操作语句 基础 习题参考答案

    1.简单说明SELECT语句中,FROM.WHERE.GROUP BY.HAVING子句的作用. 答:FROM子句指定数据来自的表,WHERE子句指定行数据的筛选条件,GROUP BY子句指定用于分组 ...

  6. 《数据库原理与应用》(第三版) 第 5 章 数据类型及关系表创建 基础 习题参考答案

    1.Tinyint数据类型定义的数据的取值范围是多少? 答:0-255 2.SmallDatatime类型精确到哪个时间单位? 答:分钟 3.定点小数类型numeric中的p和q的含义分别是什么? 答 ...

  7. 《数据库原理与应用》(第三版)第15章 备份和恢复数据库 基础 习题参考答案

    1.在确定用户数据库的备份周期时,应考虑哪些因素? 答:允许丢失的数据的多少?数据的操作高峰和低谷时间等. 2.对用户数据库和系统数据库分别应该采取什么备份策略? 答:对用户数据库是周期性备份:对系统 ...

  8. 《数据库原理与应用》(第三版)第13章 安全管理 基础 习题参考答案

    习 题 1.通常情况下,数据库中的权限划分为哪几类? 答:通常情况下,将数据库中的权限划分为两类.一类是对数据库系统进行维护的权限,另一类是对数据库中的对象和数据进行操作的权限. 2.数据库中的用户按 ...

  9. 数据库原理与应用第三版何玉洁第七章课后习题答案

    1 提高数据的查询效率 2 聚集索引,非聚集索引, 聚集索引首先按聚集索引列的值对数据进行物理排序,然后在此基础上直接建立索引B树, 非聚集索引系统直接再现有数据存储顺序的基础之上直接建立索引B树,B ...

最新文章

  1. 团队项目第一阶段冲刺站立会议11(4月28日)
  2. Python入门 Python自学路线 Python如何学习
  3. 005zabbix3.0报错记录
  4. 安装 | MatlabR2021bMac链接及Matlabx运行图基本运行代码与图像
  5. 【iOS】iOS 调试快速定位程序在哪崩溃
  6. C# 数值和字符串之间的相互转换
  7. EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?
  8. Python flask 特殊装饰器 @app.before_request 和 @app.after_request 以及@app.errorhandler介绍
  9. .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  10. 电脑qq浏览器怎么滚动截长图_QQ浏览器怎样实现长截图
  11. Python项目实战-----科比数据集分析
  12. 分享82个HTML电脑主机模板,总有一款适合您
  13. 实战技法 - 短线操盘 (10)
  14. php网页ico更改,favicon.ico图片该如何修改
  15. doceker使用教程(一)
  16. Java一瓶可乐_Java实现可乐瓶问题
  17. 金仓数据库 KingbaseES V8.3至V8.6迁移最佳实践(3. KingbaseES移植能力支撑体系)
  18. win10电脑日历怎么显示第几周?
  19. 泡MM经典语录,女的回答更绝!
  20. 低代码开发-牛刀低代码和专业开发云 JNPF 3.4.5 旗舰版 /微服务、单体 、JAVA 和.net6版本

热门文章

  1. Ajax 实现无刷新分页
  2. WebStorm For Mac下载及破解方法
  3. 【.Net Framework 体积大?】不安装.net framework 也能运行!?开篇叙述-1
  4. 【转】理解JavaScript中的事件处理
  5. c#可移动不规则窗体
  6. 【转】经济计量学软件包Eviews快速使用
  7. python语言编程中的保留字_Python语言程序设计整理
  8. orcle抽数据到mysql_抽取oracle数据到mysql数据库的实现过程
  9. 有序数组求中位数问题
  10. 2018.11.05 NOIP模拟 规避(最短路计数)