第6章_存储过程与触发器练习题

合集下载

《数据库原理与应用》实验存储过程和触发器(部分答案)

《数据库原理与应用》实验存储过程和触发器(部分答案)

实验6存储过程和触发器1.实验目的(1)掌握通过SQL Server管理平台和Transact-SQL语句CREATE PROCEDURE创建存储过程的方法和步骤。

(2)掌握使用Transact-SQL语句EXECUTE执行存储过程的方法。

(3)掌握通过SQL Server管理平台和Transact-SQL语句ALTER PROCEDURE修改存储过程的方法。

(4)掌握通过SQL Server管理平台和Transact-SQL语句DROP PROCEDURE删除存储过程的方法。

(5)掌握通过SQL Server管理平台和Transact-SQL语句CREATE TRIGGER创建触发器的方法和步骤。

(6)掌握引发触发器的方法。

(7)掌握使用SQL Server管理平台或Transact-SQL语句修改和删除触发器。

(8)掌握事务、命名事务的创建方法,了解不同类型的事务的处理情况。

2.实验内容及步骤请先附加studentsdb数据库,然后完成以下实验。

(1)在查询设计器中输入以下代码,创建一个利用流控制语句的存储过程letters_print,该存储过程能够显示个小写字母。

语句:CREATE PROCEDURE letters_printASDECLARE@count intSET@count=0WHILE@count<26BEGINPRINT CHAR(ASCII('a')+@count)SET@count=@count+1ENDexec letters_print(2)输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。

语句:create proc stu_info@name char(10)asbeginSELECT姓名,g.课程编号,分数FROM dbo.student_info s JOIN grade gON s.学号=g.学号WHERE s.姓名=@nameEndexec stu_info'马东'(3)使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g。

SQL Server存储过程与触发器课堂练习及答案

SQL Server存储过程与触发器课堂练习及答案

1.创建一个存储过程,显示所有价格在15美元以下的书的书名,类型,价格。

CREATE PROCEDURE show_titleASSELECT title,type,priceFROM titlesWHERE price < 15GOEXEC show_title2.把价格作为参数,创建一个能显示在某两个指定价格之间的书的书名,类型,价格。

CREATE PROCEDURE show_title2@price1 money,@price2 moneyASSELECT title,type,priceFROM titlesWHERE price between @price1 and @price2GOshow_title2 12,203.使用OUTPUT参数,创建一个计算圆柱体体积的存储过程。

并执行它。

CREATE PROCEDURE comp_area@r smallint,@h smallint,@result decimal(10,2) OUTPUTASSET @result = PI()*SQUARE(@r)* @hGODECLARE @answer decimal(10,2)EXECUTE comp_area 2,3, @answer OUTPUTSELECT 'The result is: ', @answer4.A) 建立price_change表,准备用来存放书的价格变化信息,有以下几列:title_id,type, old_price, new_price, change_date, operator。

B) 建立一个更新触发器,一旦titles表发生更新,立即把相关信息存放到price_change 表中。

create table price_change(title_id varchar(20),type varchar(20),old_price money,new_price money,change_date datetime,operator varchar(20))gocreate trigger tri_priceon titlesfor updateasinsert into price_changeselect ,,,,getdate(),user_name()from deleted o JOIN inserted nON =goupdate titles set price = price*5.修改练习4,使得只有当price列被更新时,才会触发触发器。

存储过程、函数与触发器操作答案

存储过程、函数与触发器操作答案

《存储过程、函数与触发器操作》实验一、实验目的与要求1、掌握存储过程的使用。

2、掌握函数的使用。

3、掌握触发器操作。

三、实验内容一、存储过程1、在“教务管理系统”数据库中创建一个名为ProcStudentInfo的存储过程,它返回学生的学号、姓名、性别、班级编号、年级和籍贯信息。

CREATE PROCEDURE Proc_StudentInfoASSELECT 学号,姓名,性别,班级编号,年级,籍贯FROM 学生信息2、用EXECUTE执行Proc_StudentInfo存储过程。

EXECUTE Proc_StudentInfo3、创建一个存储过程,用于返回“教务管理系统”数据库上某个班级中所有学生的信息。

CREATE PROCEDURE Proc_GetClassStudent1@ClassID varchar(14)ASSELECT 学号,姓名,性别,班级编号,年级,籍贯FROM 学生信息WHERE 班级编号=@ClassID4、创建一个存储过程,用于返回“教务管理系统”数据库上某个班级中所有学生的信息,默认班级编号为'20031340000102' 。

CREATE PROCEDURE Proc_GetClassStudent2@ClassID varchar(14)= '20031340000102'ASSELECT 学号,姓名,性别,班级编号,年级,籍贯FROM 学生信息WHERE 班级编号=@ClassIDEXECUTE Proc_GetClassStudent2 '20031340000103'5、创建一个返回执行代码为100的存储过程。

CREATE PROCEDURE Proc_GetClassStudent4@ClassID varchar(14)ASBEGINSELECT 学号,姓名,性别,班级编号,年级,籍贯FROM 学生信息WHERE 班级编号=@ClassIDRETURN 100END6、执行存储过程Proc_GetClassStudent2和Proc_GetClassStudent4,并定义两个个变量存储执行返回代码。

电大数据库系统与应用,形考册第6章,习题与参考答案

电大数据库系统与应用,形考册第6章,习题与参考答案

第6章习题与参考答案一.单项选择题1.下列关于视图的说法,正确的是(B)。

A.视图与基本表一样,也存储数据B.对视图的操作最终都转换为对基本表的操作C.视图的数据源只能是基本表D.所有视图都可以实现对数据的增、删、改、查操作2.在视图的定义语句中,只能包含(A)。

A.数据查询语句B.数据增、删、改语句C.创建表的语句D.全部都可以3.视图对应数据库三级模式中的(A)。

A.外模式B.内模式C.模式D.其他4.下列关于视图的说法,正确的是(B)。

A.通过视图可以提高数据查询效率B.视图提供了数据的逻辑独立性C.视图只能建立在基本表上D.定义视图的语句可以包含数据更改语句5.创建视图的主要作用是(D)。

A.提高数据查询效率B.维护数据的完整性约束C.维护数据的一致性D.提供用户视角的数据6.设有学生表(学号,姓名,所在系)。

下列建立统计每个系的学生人数的视图语句中,正确的是(D)。

A.CREATE VIEW v1ASSELECT 所在系, COUNT(*) FROM 学生表GROUP BY 所在系B.CREATE VIEW v1ASSELECT 所在系, SUM(*) FROM 学生表GROUP BY 所在系C.CREATE VIEW v1(系名,人数) ASSELECT 所在系, SUM(*) FROM 学生表GROUP BY 所在系D.CREATE VIEW v1(系名,人数) ASSELECT 所在系, COUNT(*) FROM 学生表GROUP BY 所在系7.设用户在某数据库中经常需要进行如下查询操作:SELECT * FROM T WHERE C1='A' ORDER BY C2设T表中已在C1列上建立了主键约束,且该表只建有该约束。

为提高该查询的执行效率,下列方法中可行的是(C)。

A.在C1列上建立一个聚集索引,在C2列上建立一个非聚集索引B.在C1和C2列上分别建立一个非聚集索引C.在C2列上建立一个非聚集索引D.在C1和C2列上建立一个组合的非聚集索引8.下列关于索引的说法,正确的是(C)。

数据库存储过程练习附答案

数据库存储过程练习附答案

存储过程、触发器练习1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。

create proc p_dept@dept char(20),@mannum int outputasselect @allcre=count(sno) from studentwhere sdept=@dept and ssex='男'declare @num intexec p_dept '计算机系',@num outputprint @num2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。

(使用输出参数)。

并执行该存储过程。

create proc p_cou@name char(10),@allcre int outputasselect @allcre=sum(ccredit)from student,course,scwhere student.sno=sc.sno and o=oand sname=@name group by sc.snodeclare @asum intexec p_cou '刘晨',@asum outputprint @asum3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。

CREATE TRIGGER mes_scON scFOR UPDATEASIF UPDATE(grade)BEGINROLLBACK TRANPRINT '学生成绩不能被修改,请与教务处联系'END4、创建一个insert触发器uninsertstu,当在student表中插入一条新纪录时,如果是“计算机系”的学生,则撤销该插入操作,并返回“此系人数已满,不能再添加”信息。

存储过程与触发器概念及应用考试

存储过程与触发器概念及应用考试

存储过程与触发器概念及应用考试(答案见尾页)一、选择题1. 存储过程是什么?A. 一种数据库对象,用于存储逻辑操作B. 一种数据库对象,用于存储查询语句C. 一种数据库对象,用于存储流程控制语句D. 一种数据库对象,用于存储数据2. 触发器的作用是什么?A. 在数据库中插入、更新或删除数据前自动执行的程序B. 在数据库中创建、修改或删除表C. 用于数据完整性约束D. 用于权限管理3. 存储过程和触发器都存放在以下哪个对象中?A. 数据库B. 表C. 索引D. 视图4. 存储过程可以通过哪种方式调用?A. SQL语句B. 外部程序调用C. 内部程序调用D. 以上都是5. 触发器的类型有哪几种?A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. ALL触发器6. 触发器的工作原理是在哪个事件发生时执行?A. 数据库打开时B. 数据库关闭时C. 数据被插入、更新或删除时D. 用户登录时7. 如何创建一个存储过程?A. 使用CREATE PROCEDURE语句B. 使用CREATE TABLE语句C. 使用ALTER TABLE语句D. 使用CREATE INDEX语句8. 触发器中的IF语句用于做什么?A. 进行条件判断B. 控制触发器的执行流程C. 计算数据D. 存储数据9. 在触发器中,哪个关键字表示不执行任何操作?A. ALLB. EXCEPTIONC. THEND. ELSE10. 触发器的执行顺序是怎样的?A. 从内到外,从上到下B. 从内到外,从下到上C. 从外到内,从上到下D. 从外到内,从下到上11. 触发器的功能是什么?A. 处理数据库中的数据完整性问题B. 执行数据库中的批量操作C. 监控数据库中的数据变化,并在特定事件发生时自动执行操作D. 管理数据库中的用户权限12. 存储过程与触发器都是数据库对象,它们的主要区别是什么?A. 存储过程用于存储查询结果,而触发器用于执行操作B. 存储过程可以有输入参数,而触发器不能C. 存储过程是预编译的,可以提高数据库性能,而触发器是运行时执行的D. 触发器只能由用户触发,而存储过程可以由任何具有权限的用户调用13. 下列哪个不是存储过程的特点?A. 可以接收参数B. 可以有多个输出参数C. 只能在数据库内部执行D. 可以直接修改数据库中的数据14. 触发器通常与哪个对象相关联?A. 数据库表B. 数据库视图C. 数据库索引D. 数据库存储过程15. 在MySQL中,触发器的类型有哪些?A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. SELECT触发器16. 触发器的工作原理是什么?A. 当对触发器关联的数据表进行指定类型的操作时,触发器自动执行预定义的操作B. 当数据库服务器启动时,触发器自动执行C. 当有新的连接连接到数据库时,触发器自动执行D. 当有用户登录到数据库时,触发器自动执行17. 如何在MySQL中创建一个存储过程?A. 使用CREATE PROCEDURE语句B. 使用CREATE FUNCTION语句C. 使用ALTER PROCEDURE语句D. 使用ALTER FUNCTION语句18. 触发器中可以使用哪些类型的条件判断?A. IF...ELSE语句B. CASE语句C. THEN...ELSE语句D. ALL...IN语句19. 触发器可以分为几种类型?(多选)A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. SELECT触发器20. 存储过程和触发器都存放在哪种类型的数据库对象中?A. 表B. 序列C. 索引D. 视图21. 存储过程的类型有哪几种?A. 标准存储过程B. 用户定义存储过程C. 扩展存储过程D. 内置存储过程22. 下列哪个不是存储过程中的控制结构?A. IF...ELSEB. WHILEC. CASED. GOTO23. 触发器在什么情况下会被触发?A. 当表被添加或修改时B. 当数据库连接打开时C. 当用户登录时D. 当执行特定SQL语句时24. 如何使用存储过程?A. 使用CREATE PROCEDURE语句创建存储过程B. 使用ALTER PROCEDURE语句修改存储过程C. 使用DROP PROCEDURE语句删除存储过程D. 以上都是25. 触发器的主要优点是什么?A. 提高数据库性能B. 减少数据库维护成本C. 增加数据库安全性D. 以上都是26. 触发器的主要缺点是什么?A. 可能导致数据库性能下降B. 可能导致数据库死锁C. 可能导致数据库崩溃D. 可能导致数据库锁定二、问答题1. 什么是存储过程?请简述其特点。

存储过程与触发器练习题

存储过程与触发器练习题
5 在kc表上建立update触发器,如果修改kc表的kc_id字段时,update操作回滚,并提示不能修改kc_id的错误信息。
6 在xs表上建立update触发器,如果修改xs表的xs_id字段时,cj表中Hale Waihona Puke 应的xs_id也进行相应的修改。
7 删除cj表中的所有的外键约束,并建立insert类型的触发器,实现:(1)验证插入数据的xs_id在xs表中是否存在.(2)验证插入数据的kc_id在kc表中是否存在(3)验证插入数据的cj是否处在0-100之间。如果有一个不满足,回滚该插入操作。
2 在xs表上建立insert触发器,每次成功插入一条记录时,对class表中的xs_count字段值要+1。
3 在xs表上建立delete触发器,每次成功删除一条记录时,对class表中的xs_count字段值要-1。
4 取消cj表中的外键约束,改用cj表的insert触发器实现当cj表的xs_id,kc_id在xs表和kc表中找不到对应的xs_id,kc_id时,进行操作回滚,并提示错误信息。
5 创建存储过程实现:按学生查询选课情况
6 创建存储过程实现:按课程查询那些学生选修了它。
7 创建存储过程实现:查询既选修了某个老师的课程,又选修了某个老师的课程的学生信息。
8 创建存储过程实现按姓名排序后分页显示数据,每页显示10行记录。
二、一般的存储过程练习题
1 求两个整数的和
(无参数实现,有参数实现,默认值方式实现)
一、数据库相关的存储过程练习题
1 创建存储过程实现按籍贯查询xs表,并执行该存储过程进行验证
2 创建存储过程实现按对xs表中某一个学生的籍贯的修改,并执行该存储过程进行验证

电大数据库系统及应用,形考册第6章,习题与参考答案

电大数据库系统及应用,形考册第6章,习题与参考答案

第6章习题与参考答案一.单项选择题1.下列关于视图的说法,正确的是(B)。

A.视图与基本表一样,也存储数据B.对视图的操作最终都转换为对基本表的操作C.视图的数据源只能是基本表D.所有视图都可以实现对数据的增、删、改、查操作2.在视图的定义语句中,只能包含(A)。

A.数据查询语句B.数据增、删、改语句C.创建表的语句D.全部都可以3.视图对应数据库三级模式中的(A)。

A.外模式B.内模式C.模式D.其他4.下列关于视图的说法,正确的是(B)。

A.通过视图可以提高数据查询效率B.视图提供了数据的逻辑独立性C.视图只能建立在基本表上D.定义视图的语句可以包含数据更改语句5.创建视图的主要作用是(D)。

A.提高数据查询效率B.维护数据的完整性约束C.维护数据的一致性D.提供用户视角的数据6.设有学生表(学号,姓名,所在系)。

下列建立统计每个系的学生人数的视图语句中,正确的是(D)。

A.CREATE VIEW v1ASSELECT 所在系, COUNT(*) FROM 学生表GROUP BY 所在系B.CREATE VIEW v1ASSELECT 所在系, SUM(*) FROM 学生表GROUP BY 所在系C.CREATE VIEW v1(系名,人数) ASSELECT 所在系, SUM(*) FROM 学生表GROUP BY 所在系D.CREATE VIEW v1(系名,人数) ASSELECT 所在系, COUNT(*) FROM 学生表GROUP BY 所在系7.设用户在某数据库中经常需要进行如下查询操作:SELECT * FROM T WHERE C1='A' ORDER BY C2设T表中已在C1列上建立了主键约束,且该表只建有该约束。

为提高该查询的执行效率,下列方法中可行的是(C)。

A.在C1列上建立一个聚集索引,在C2列上建立一个非聚集索引B.在C1和C2列上分别建立一个非聚集索引C.在C2列上建立一个非聚集索引D.在C1和C2列上建立一个组合的非聚集索引8.下列关于索引的说法,正确的是(C)。

存储过程与触发器练习

存储过程与触发器练习

存储过程与触发器练习1.使用library数据库创建一个存储过程,查询赵良宇的rname和lendnum。

2.为数据库library创建一个多表查询的存储过程,查询出读者为“程鹏”的借阅信息。

3.为数据库library创建一个查询某读者(读者姓名在执行存储过程时给出)借阅情况的存储过程(输入参数型)4.利用输出参数计算阶乘(例如输入5,求5!)触发器练习:1.创建基于表“reader”、执行delete操作的after触发器。

功能是当删除一名读者之后,给出“数据已被删除!”文字提示。

Create trigger a1On readerFor deleteAsBeginPrint ‘数据被删除!’end2.创建insert触发器在数据库library表borrow中插入借阅信息数据时,得到该书的应还日期并将读者表中的借阅数量增加1本Create trigger a2On borrowAfter insertAsBeginDeclare @dz char(10),@ts char(15),@dx int,@ts intSet @dz=(select rid from inserted)Set @ts=(select bid from inserted)Set @dx=(select typeid from reader where rid=@dz)Update borrowSet sreturndate=lenddate+(select limitdays from readertype where typeid=@dx)Where rid=@dz and bid=@ts and returndate is nullUpdate readerSet lendnum=lendnum+1Where rid=@dzEnd3.创建update触发器在数据库Library中,当读者还书时,实际上要修改表brorrow中相应记录还期列的值,创建触发器并计算出是否过期,以及过期了多少天,同时将读者表reader的借阅数量减1 CREATE TRIGGER a3 ON borrowAFTER UPDATEASDECLARE @days int,@dzbh char(10),@tsbh char(15)SET @dzbh=(select RID from inserted)SET @tsbh=(select BID from inserted)SELECT @days=DATEDIFF(day, ReturnDate, SReturnDate)FROM borrowWHERE RID=@dzbh and BID=@tsbhIF @days>0PRINT '没有过期!'ELSEPRINT '过期'+convert(char(6),@days)+'天'Update readerSet lendnum=lendnum-1Where rid=@dzbhEnd触发代码:USE LibraryUPDATE borrow SET ReturnDate='2007-12-12'WHERE RID='2000186010' and BID='TP85-08'GO4.创建delete触发器对Library库中Reader表的DELETE操作定义触发器。

数据库技术及应用 存储过程与触发器(6.6)--习题九

数据库技术及应用 存储过程与触发器(6.6)--习题九

“数据库技术及应用”习题作业教学单元9:数据恢复与共享作业:1.如何设置默认值约束?2.如何设置检查约束?3.默认值约束与默认值有何区别?4.简述设置数据完整性的优点。

5.简述设置默认值约束和检查约束有什么益处。

6.怎样将实用数据库应用系统做系统备份?7.什么是数据恢复?8.故障的种类有哪些?9.恢复策略有哪些?10.事务处理技术有哪些?11.数据恢复有哪些技术?12.使用检查点方法进行恢复的步骤是什么?13.什么是数据库镜像?它有什么用途?14.什么是封锁?15.封锁有几种类型?分别说明它们的含义。

16.两段锁协议的概念。

17.并发操作可能会产生哪几类数据不一致,如何避免?18.简述死锁的预防、诊断与解除。

习题:1、解决并发操作带来的数据不一致问题普遍采用( A)技术。

A. 封锁B. 存取控制C. 恢复D. 协商2、下列不属于并发操作带来的问题是(C )。

A. 丢失修改B. 不可重复读C. 死锁D. 脏读3、解决并发操作带来的数据不一致问题普遍采用( A)技术。

A. 封锁B. 存取控制C. 恢复D. 协商4、下列不属于并发操作带来的问题是(C )。

A. 丢失修改B. 不可重复读C. 死锁D. 脏读5.下列不属于并发操作带来的问题是(C )。

A. 丢失修改B. 不可重复读C. 死锁D. 脏读答案:1.A2.C3.A4.C5.C。

存储过程语法练习题

存储过程语法练习题

存储过程语法练习题存储过程语法练习题存储过程是数据库中一种非常重要的对象,它可以用来封装一系列的SQL语句,实现特定的功能。

通过存储过程,我们可以提高数据库的性能,简化复杂的业务逻辑,并且可以实现一些数据库本身不支持的功能。

本文将通过一些练习题来帮助读者加深对存储过程语法的理解和应用。

练习一:创建一个简单的存储过程假设有一个学生表student,包含字段id、name和age。

请编写一个存储过程,用于查询年龄大于等于18岁的学生信息,并按照年龄降序排序。

解答:```sqlCREATE PROCEDURE GetAdultStudentsASBEGINSELECT id, name, ageFROM studentWHERE age >= 18ORDER BY age DESCEND```练习二:带参数的存储过程在练习一的基础上,假设需要根据学生的姓名查询学生信息。

请修改存储过程,使其可以接受一个姓名参数,并根据姓名查询学生信息。

解答:```sqlCREATE PROCEDURE GetStudentByName@name NVARCHAR(50)ASBEGINSELECT id, name, ageFROM studentWHERE name = @nameEND```练习三:带输出参数的存储过程假设有一个学生表student,包含字段id、name和age。

请编写一个存储过程,用于查询年龄大于等于18岁的学生数量,并将结果输出。

解答:```sqlCREATE PROCEDURE GetAdultStudentCount@count INT OUTPUTASBEGINSELECT @count = COUNT(*)FROM studentWHERE age >= 18END```练习四:带返回值的存储过程在练习三的基础上,假设需要查询年龄大于等于18岁的学生数量,并返回结果。

请修改存储过程,使其可以返回学生数量。

数据库应用基础第6章习题参考答案

数据库应用基础第6章习题参考答案

1.选择题(1)(C)允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。

A.存储过程B.视图C.触发器D.索引(2)SQL Server为每个触发器创建了两个临时表,它们是( B )。

A.Updated和Deleted B.Inserted和DeletedC.Inserted和Updated D.Seleted和Inserted(3)SQL Server中存储过程由一组预先定义并被(C)的Transact-SQL语句组成。

A.编写B.解释C.编译D.保存(4)下列可以查看表的行数以及表使用的存储空间信息的系统存储过程是( A )。

A.sq_spaceused B.sq_dependsC.sq_help D.sq_rename2.填空题(1)存储过程(stored procedure)是SQL Server服务器中(一组预编译的)Transact-SQL 语句的集合。

(2)SQL Server中的存储过程具有如下(的系统存储过程、用户自定义存储过程、临时存储过程、远程存储过程、扩展存储过程5 )种类型。

(3)创建存储过程实际是对存储过程进行定义的过程,主要包含存储过程名称及其(参数)和存储过程的主体两部分。

(4)触发器主要用于强制复杂的(业务规则)或要求。

(5)当某个表被删除后,该表上的(所有触发器)将自动被删除。

3.问答题(1)使用存储过程的主要优点有哪些?答:存储过程的主要优点有:- 实现模块化编程,一个存储过程可以被多个用户共享和重用。

- 可以加快程序的运行速度。

- 可以减少网络的流量。

- 可以提高数据库的安全性(2)存储过程分哪两类?各有何特点?答:存储过程最常见的主要分为系统存储过程和用户自定义存储过程两类,此外还有临时存储过程、远程存储过程和扩展存储过程:- 系统存储过程由系统自动创建,主要存储在master数据库中,一般以sp_为前缀,系统存储过程完成的功能主要是从系统表中获取信息,通过系统存储过程,SQL Server中的许多管理性或信息性的活动都可以被顺利地完成。

存储过程和触发器习题

存储过程和触发器习题

1.创建存储过程P_1,功能是查询性别为男的学生的学号,姓名,性别。

create proc p_1(@xb char(2))asselect学号,姓名,性别from学生where性别=@xbgoexecute p_1 '男'2.创建存储过程P_2,功能是查询指定学生的学号,姓名,性别和班级,姓名由参数传递。

create proc p_2(@xm char(8))asselect学号,姓名,性别,班名from学生,班级where学生.班号=班级.班号and姓名=@xm goexecute p_2 '王五'3.创建存储过程P_3,功能是查询某门课程的学生成绩,显示学号,姓名,课程名,成绩,并将成绩转换为等级分制。

课程名由参数传递。

create proc p_3(@kcm char(16))asselect学生.学号,姓名,课程名,casewhen成绩>=90 then'优秀'when成绩>=70 and成绩<90 then'良好'when成绩>=60 and成绩<70 then'一般'when成绩<60 then'不及格'endas成绩from选课,课程,学生where选课.课程号=课程.课程号and学生.学号=选课.学号and课程名=@kcmgoexecute p_3 '市场营销'4.创建存储过程P_4,功能是查询某门课程的总分和平均分,将返回参数。

课程名由参数传递。

create proc p_4(@kcm char(16),@pjcj int output,@zcj int output)asselect sum(成绩)as总分,avg(成绩)as平均分from选课,课程where选课.课程号=课程.课程号and课程名=@kcmgodeclare @zcj int,@pj intexecute p_4 '数据库原理',@zcj output,@pj outputprint @zcjprint @pj5.创建触发器T_1,功能是当向数据表学生添加记录时,显示学生的信息。

实验6 大数据库实验——存储过程和触发器

实验6 大数据库实验——存储过程和触发器

实验6 存储过程和触发器一、实验目的1、加深和巩固对存储过程和触发器概念的理解。

2、掌握触发器的简单应用。

3、掌握存储过程的简单应用。

二、实验容一)存储过程:1. 创建一存储过程,求l+2+3+…+n,并打印结果。

CREATE PROCEDURE addresultASDECLARE n int=10,/*最后一个数*/i int=0,result int=0 /*结果*/BEGINWHILE(i<=n)BEGINSET result=result+iSET i=i+1ENDPRINT'1+2+3+...+n的结果是:'PRINT resultRETURN(result)ENDGO2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。

EXEC addresult3. 修改上述存储过程为addresult1,使得n为输入参数,其具体值由用户调用此存储过程时指定。

CREATE PROCEDURE addresult1n int=10 /*最后一个数*/ASDECLARE i int=0,result int=0 /*结果*/BEGINWHILE(i<=n)BEGINSET result=result+iSET i=i+1ENDPRINT'1+2+3+...+n的结果是:'PRINT resultRETURN(result)ENDGO4. 调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。

EXEC addresult1 1005.修改上述存储过程为addresult2,将n参数设定默认值为10,并改设sum为输出参数,让主程序能够接收计算结果。

CREATE PROCEDURE addresult2n int=10,/*最后一个数*/sum int out/*结果*/ASDECLARE i int=0BEGINset sum=0WHILE(i<=n)BEGINSET sum=sum+iSET i=i+1ENDENDGO6.调用上面修改后的addresult2存储过程,设置变量s接收计算l+2+3+…+10的结果。

第6章_存储过程与触发器练习题

第6章_存储过程与触发器练习题

有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与教师职称有关。

实现这个约束的可行方案是( )。

A 在教师表上定义一个视图B 在教师表上定义一个存储过程C 在教师表上定义插入和修改操作的触发器D 在教师表上定义一个标量函数参考答案C在SQL SERVER中,执行带参数的过程,正确的方法为()。

A 过程名参数B 过程名(参数)C 过程名=参数D ABC均可参考答案A在SQL SERVER服务器上,存储过程是一组预先定义并()的Transact-SQL 语句。

A 保存B 解释C 编译D 编写参考答案C在SQL Server中,触发器不具有()类型。

A INSERT触发器B UPDATE触发器C DELETE触发器D SELECT触发器参考答案D()允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。

A 存储过程B 规则C 触发器D 索引参考答案C为了使用输出参数,需要在CREATE PROCEDURE语句中指定关键字( )。

A OPTIONB OUTPUTC CHECKD DEFAULT参考答案B下列( )语句用于创建触发器。

A CREATE PROCEDUREB CREATE TRIGGERC ALTER TRIGGERD DROP TRIGGER参考答案B下列( )语句用于删除触发器。

A CREATE PROCEDUREB CREATE TRIGGERC ALTER TRIGGERD DROP TRIGGER参考答案D下列( )语句用于删除存储过程。

A CREATE PROCEDUREB CREATE TABLEC DROP PROCEDURED 其他参考答案C下列( )语句用于创建存储过程。

A CREATE PROCEDUREB CREATE TABLEC DROP PROCEDURED 其他参考答案Asp_help属于哪一种存储过程()?A 系统存储过程B 用户定义存储过程C 扩展存储过程D 其他参考答案A以下语句创建的触发器是当对表A进行()操作时触发。

触发器试题

触发器试题

1、下列有关触发器的描述,错误的是(B)
A、触发器是一种特殊的存储过程,用户不能直接调用
B、触发器inserted表和deleted表有共同记录
C、触发器可以用来定义比check约束更复杂的规则
D、删除触发器可以哟弄DROP TRIGGER命令,也可以用管理平台操作
2、关于触发器的正确说法是(D)
A、D ML触发器控制表记录
B、DDL触发器实现数据库管理
C、D ML触发器不能控制所有数据完整性
D、触发器中的T-SQL代码在事件产生时执行
3、关于触发器的错误说法是(C)
A、游标一般用于存储过程
B、游标也可以用于触发器
C、应用程序也可以调用触发器
D、触发器一般是针对表
4、当触发器执行时,系统会创建临时表保存用户操作更改的行的新值和旧值,UPDATE操
作所涉及的旧值会被临时保存在(C)
A、u pdate表
B、inserted表
C、d eleted表
D、i nserted表和update表
5、如果有两个事物同时对数据库中同一数据进行操作,不会引起冲突的是(D)
A、一个DELETE和一个SELECT
B、一个SELECT和一个DELETE
C、两个UPDATE
D、两个SELECT
判断题
6、触发器基于一个表创建,但是可以针对多个表进行操作(对)
7、触发器(trigger)是一种特殊的存储过程(对)
8、触发器被定义以后,只有当用户调用它时才触发,用户不调用时,触发器不起作用(错)
9、可以根据完整性的需要,对某一个表定义SELECT触发器(错)
10、触发器主要是通过表操作事件进行触发而被执行的(对)。

第6章习题参考答案

第6章习题参考答案

第6章习题解答1.思考题(1)什么是存储过程?为什么要使用存储过程?答:存储过程是SQL Server服务器中一组(预编译)的T-SQL语句的集合,是存储在数据库中的程序,这些程序是用来完成对数据库的指定操作。

存储过程具有如下优点:1) 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2) 当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

这些操作,如果用程序来完成,就变成了一条条的SQL 语句,可能要多次连接数据库。

而使用存储过程,只需要连接一次数据库就可以了。

3) 存储过程可以重复使用,可减少数据库开发人员的工作量。

4) 安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

(2)系统存储过程和自定义存储过程有何区别?答:最简单的区别就是系统存储过程是系统自带的,用户不可更改删除;而自定义的存储过程是用户自己编辑的。

在自定义存储过程中可以调用系统存储过程。

(3)当某个表被删除后,该表上的所有触发器是否还存在?为什么?答:因为触发器(trigger)是SQL Server数据库中一种特殊类型的存储过程,不能由用户直接调用,而且可以包含复杂的T-SQL语句。

触发器是为表上的更新、插入、删除操作定义的,也就是说当表上发生更新、插入或删除操作时触发器将执行。

所以,当某个表被删除后,该表上的所有触发器将自动被删除。

触发器主要用于强制复杂的业务规则或要求。

(4)存储过程和触发器有什么区别?什么时候用存储过程?什么时候用触发器?答:存储过程和触发器,它们都是独立的数据库对象和存储在数据库上的特殊的程序。

存储过程由用户调用,完成指定的数据处理任务;触发器则由特定的操作触发,从而自动完成相关的处理任务。

存储过程及触发器的练习

存储过程及触发器的练习

2.触发器(Trigger)
对应于数据的操纵类型,SQL Server 中的触发器可 分为:
•INSERT触发器 •UPDATE触发器 •DELETE触发器
当表中数据被修改(增、删、改)时,SQL Server自动 执行相应的触发器。
建立触发器的语句格式
CREATE TRIGGER 触发器名 ON {表名 ‌ |视图名} [ WITH ENCRYPTION ] FOR {INSERT,UPDATA,DELETE } AS SQL操作语句 表名(视图名):触发该触发器的表名或视图名。 WITH ENCRYPTION: 对触发器的定义文本加密。 INSERT,UPDATA,DELETE :说明触发触发器的事件。一个 定义语句允许定义多个触发事件。
创建一个不带参数的存储过程 CREATE PROCEDURE brow_student SELECT * FROM student WHERE classno=‘200501’ AS
执行存储过程的方法
(1) 独立执行存储过程:
EXEC brow_student
(2) 在INSERT语句中执行存储过程:
SQL操作语句:指定触发器动作。如果要指定多个触发器操作 需用BEGIN…END将它们组成语句块。
触发器中可使用的特殊表
使用触发器时,SQL Server提供了两张特殊的临时表:
•inserted表
•deleted表
表存在于高速缓存中,与创建触发器的表有相同的结构。
•用户可以使用该表检查某些修改操作的前后状态。并基于 此状态采取行动。
一、实验目的
(1)理解存储过程的概念,掌握存储过程 的使用方法,加深对客户/服务机制的理解。 (2)学习触发器的使用,体会触发器执行 的时机,加深对触发器功能和作用的理解

最新电大数据库系统及应用-形考册第6章-习题与参考答案

最新电大数据库系统及应用-形考册第6章-习题与参考答案

第 6 章习题与参考答案.单项选择题1.下列关于视图的说法,正确的是(B)。

A.视图与基本表一样,也存储数据B.对视图的操作最终都转换为对基本表的操作C.视图的数据源只能是基本表D.所有视图都可以实现对数据的增、删、改、查操作2.在视图的定义语句中,只能包含(A)。

A.数据查询语句B.数据增、删、改语句C.创建表的语句D.全部都可以3.视图对应数据库三级模式中的( A )。

A.外模式B.内模式C.模式D.其他4.下列关于视图的说法,正确的是(B)。

A.通过视图可以提高数据查询效率B.视图提供了数据的逻辑独立性C.视图只能建立在基本表上D.定义视图的语句可以包含数据更改语句5.创建视图的主要作用是( D)。

A.提高数据查询效率B.维护数据的完整性约束C.维护数据的一致性D.提供用户视角的数据6.设有学生表(学号,姓名,所在系)。

下列建立统计每个系的学生人数的视图语句中,正确的是( D)。

A . CREATE VIEW v1ASSELECT 所在系 , COUNT(*) FROM 学生表 GROUP BY 所在系B .CREATE VIEW v1ASSELECT 所在系 , SUM(*) FROM 学生表 GROUP BY 所在系C.CREATE VIEW v1(系名,人数) ASSELECT 所在系 , SUM(*) FROM 学生表 GROUP BY 所在系D . CREATE VIEW v1(系名,人数) ASSELECT 所在系 , COUNT(*) FROM 学生表 GROUP BY 所在系7.设用户在某数据库中经常需要进行如下查询操作:SELECT * FROM T WHERE C1='A' ORDER BY C2设 T 表中已在 C1 列上建立了主键约束,且该表只建有该约束。

为提高该查询的执行效率,下列方法中可行的是( C)。

A.在 C1列上建立一个聚集索引,在 C2 列上建立一个非聚集索引B.在 C1 和 C2 列上分别建立一个非聚集索引C.在 C2 列上建立一个非聚集索引D.在 C1 和 C2 列上建立一个组合的非聚集索引8.下列关于索引的说法,正确的是(C)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有教师表 (教师号,教师名,职称,基本工资 ) ,其中基本工资的取值与教师职称 有关。

实现这个约束的可行方案是 ( ) 。

A 在教师表上定义一个视图B 在教师表上定义一个存储过程C 在教师表上定义插入和修改操作的触发器D 在教师表上定义一个标量函数参考答案C在SQL SERVE 中,执行带参数的过程,正确的方法为()A 过程名 参数B 过程名(参数)C 过程名 =参数D ABC 匀可参考答案A在SQL SERVE 服务器上,存储过程是一组预先定义并( Transact-SQL 语句。

A 保存B 解释C 编译D 编写 参考答案 C在 SQL Server 中,触发器不具有(A INSERT 触发器B UPDATE* 发器C DELETE 发器D SELECT 触发器 参考答案 D)的 )类型( )允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。

A存储过程B规则C触发器D索引参考答案C为了使用输出参数,需要在CREATPROCEDU语句中指定关键字( )A OPTIONB OUTPUTC CHECKD DEFAULT 参考答案B)语句用于创建触发器A CREATE PROCEDUREB CREATE TRIGGERC ALTER TRIGGERD DROP TRIGGER参考答案B下列()语句用于删除触发器。

A CREATE PROCEDUREB CREATE TRIGGERC ALTER TRIGGERD DROP TRIGGER 参考答案D)语句用于删除存储过程A CREATE PROCEDUREB CREATE TABLEC DROP PROCEDURED其他参考答案C下列()语句用于创建存储过程A CREATE PROCEDUREB CREATE TABLEC DROP PROCEDURED其他参考答案Asp_help属于哪一种存储过程()?A系统存储过程B用户定义存储过程C扩展存储过程D其他参考答案A以下语句创建的触发器是当对表A进行()操作时触发CREATE TRIGGER ABC ON 表AFOR INSERT, UPDATE, DELETEASA只是修改B只是插入C只是删除D修改,插入,删除参考答案D()允许用户定义一组操作,这些操作通过对指定的表进行删除、或触发。

A存储过程B视图C触发器D索引参考答案C下列可以查看表的行数以及表使用的存储空间信息的系统存储过程是(A sq_spaceusedB sq_dependsC sq_helpD sq_re name参考答案A以下哪个不是存储过程的优点()A实现模块化编程,一个存储过程可以被多个用户共享和重用。

B可以加快程序的运行速度。

C可以增加网络的流量。

D可以提高数据库的安全性。

参考答案C以下哪个不是存储过程的优点()A实现模块化编程,一个存储过程可以被多个用户共享和重用。

B可以加快程序的运行速度。

C可以增加网络的流量。

D可以提高数据库的安全性。

参考答案C替代触发器(in stead of )是在触发触发器的修改操作(A执行后插入和更新命令来执行)执行B之前C停止执行时D同时参考答案B以下不属于存储过程特点的是(A在删除所涉及表时,同时被删除B代码执行效率高C数据查询效率高D模块化编程参考答案A以下不属于触发器特点的是()A基于一个表创建,可以针对多个表进行操作B被触发自动执行C可以带参数执行D可以实施更复杂的数据完整性约束参考答案C以下()不是触发触发器的操作。

A SELECTB UPDATEC DELETED INSERT参考答案A关于存储过程和触发器的说法,正确的是()。

A都是SQL Server数据库对象B都可以为用户直接调用C都可以带参数D删除表时,都被自动删除参考答案A如果需要在插入表的记录时自动执行一些操作,常用的是()。

A存储过程B函数C触发器D存储过程与函数参考答案C对SQL Server中的存储过程,下列说法中正确的是:存储过程()。

A不能有输入参数B没有返回值C可以自动被执行D可以嵌套使用参考答案D存储过程经过了一次创建以后,可以被调用()次。

A 1B 2C 255D无数参考答案D以下()不是存储过程的优点。

A执行速度快B模块化的设计C会自动被触发D保证系统的安全性参考答案C下面关于触发器的描述,错误的是()。

A触发器是一种特殊的存储过程,用户可以直接调用B触发器表和deleted表没有共同记录C触发器可以用来定义比CHECK约束更复杂的规则D删除触发器可以使用DROP TRIGGER命令,也可以使用企业管理器参考答案ASQL Server为每个触发器创建了两个临时表,它们是()。

A Updated 和DeletedB Inserted 和DeletedC Updated 和InsertedD Updated 和Selected参考答案B在SQL语言中,建立存储过程的命令是()。

A CREATE PROCEDUREB CREATE RULEC CREATE DURED CREATE FILE参考答案A已定义存储过程AB,带有一个参数@stname varchar(20),正确的执行方法为()。

A EXEC AB 吴小雨?B EXEC AB = 吴小雨?C EXEC AB (吴小雨)D其他3种都可以参考答案A对于下面的存储过程:CREATE PROCEDURE Myp1 @p IntASSELECT St_name, AgeFROM Stude ntsWHERE Age=@p假如要在Students表中查找年龄是20岁的学生,()可以正确的调用这个存储过程。

A EXEC Myp1 @p= 20'B EXEC Myp1 @p=20C EXEC Myp1= 20'D EXEC Myp 仁20参考答案B当某个表被删除后,该表上的触发器被自动删除。

[参考答案]正确SQL Server为每个触发器创建了两个临时表,它们是updated和deleted。

[参考答案]错误存储过程是存储在服务器上的一组预编译的Transact-SQL语句。

[参考答案]正确在SQL SERVER中,触发器的执行是在数据的插入、更新或删除之前执行的。

[参考答案]错误若要修改一个存储过程,可以先删除该存储过程,再重新创建。

[参考答案]正确触发器与表紧密相连,可以看作表定义的一部分。

[参考答案]正确临时存储过程总是在master数据库中创建。

通常分为局部临时存储过程和全局临时存储过程。

[参考答案]错误某个表被删除后,该表上的所有触发器将自动被删除。

[参考答案]正确SQL Server中的存储过程具有5种类型。

[参考答案]正确存储过程的输出结果可以传递给一个变量。

[参考答案]正确触发器是可在程序中被调用执行。

[参考答案]错误存储过程是存储在服务器上的一组预编译的Transcat-SQL语句。

[参考答案]正确创建触发器的时候可以不是表的所有者或数据库的所有者。

[参考答案]错误每个存储过程向调用方返回一个整数返回代码。

如果存储过程没有显式设置返回代码的值,则返回代码为0,表示成功。

[参考答案]正确在SQL Server中,触发器的执行通过EXECUTE命令实现。

[参考答案]错误在SQL SERVER中,替代触发器的执行是在数据变动之前被触发,对于每个触发操作只能定义一个替代触发器。

[参考答案]正确使用存储过程可以减少网络流量。

[考答案]正确存储过程使代码具有重用性。

[参考答案]正确触发器不能被调用,它可以自动执行。

[参考答案]正确在SQL SERVER 中,触发器的执行是在数据的插入、更新或删除之前执行的。

[参考答案]错误创建存储过程的命令关键字 CREATE PROCEDU 不可以缩写。

[参考答案]错误触发器可以在视图上定义。

[参考答案]错误 触发器被激活后自动创建 deleted 和inserted 两个临时表。

[参考答案]错误ROLLBACK TRANSACTION 的意思是回滚事务。

[参考答案]正确触发器用来定义比 CHECK 约束更复杂的规则或要求。

[参考答案]正确通过语句ALTERPROCEDURE 改存储过程与删除存储过程然后再新建一个同名存 储过程的效果是相同的。

[参考答案]错误某SQL Server 2000数据库中两张表:商品表(商品号,商品名,商品类型, 价格)和销售表(商品号,销售时间,销售数量,销售单价)。

用户需统计指定 年份每类商品的销售总数量和销售总利润,要求只列出销售总利润最多的前三类 商品的商品类别、销售总数量和销售总利润。

为了完成该统计操作,请按要求将 下面的存储过程补充完整。

CREATE PROC p_Sum @year INT ASSELECT (__1__ )商品类别, (__2__ ) AS 销售总利润FROM 商品表 JOIN 销售表 ON 商品表. 商品号=销售表.商品号 WHERE year (销售时间) GROUP BY 商品类别ORDER BY 销售总利润(__3__) 参考答案 1: TOP 3SUM 销售数量) AS 销售总数量,@year2:(销售单价-成本价)*SUM(销售数量)3: DESC降序)在SQL Server 2000中,设有顾客表(顾客号,顾客名,所在地区,年龄), 应用系统中需统计指定地区的顾客人数和平均年龄。

请补全下列存储过程代码以完成该功能。

CREATE PROC P_Count @area varchar(20)ASSELECT COUNT(*) AS 人数,(__1__ ) AS 平均年龄FROM 顾客表WHERE所在地区=@area参考答案1:AVG年龄)以下代码创建和执行存储过程proc_score,查询S_C_Info表中C_No为“ 0002” 的St_ID, Score 等信息。

CREATE PROC pro_scoreASSELECT St_ID, __1__FROM S_C_I nfoWHERE C_No=0002'执行存储过程proc_score命令为:EXEC __2__参考答案1: Score2: proc_score在student_db数据库中创建一个名为“ tr_P1 ”的存储过程,实现根据学生学号,查询该学生的选修课程情况,其中包括该学生的学号、姓名、课程名、课程类型、成绩。

CREATE __1__ tr_P1 @stlD varchar(IO)ASSELECT St_I nfo.St_ID, St_I nfo.St_Name, C」n fo.C_Name, C」n fo.C_Type,S_C」n fo.ScoreFROM St_lnfo, S_C」nfo, C」nfoWHERE St_I nfo.St_ID = S_C_I nfo.St_ID AND S_C_I nfo.C_No =C_ln fo.C_No调用该存储过程查询“ 0403060111”学生的选修课程情况。

相关文档
最新文档