第6章存储过程与触发器练习题文档格式.docx
《第6章存储过程与触发器练习题文档格式.docx》由会员分享,可在线阅读,更多相关《第6章存储过程与触发器练习题文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
CALTERTRIGGER
DDROPTRIGGER
参考答案
B
下列()语句用于删除触发器。
ACREATEPROCEDUREBCREATETRIGGERCALTERTRIGGERDDROPTRIGGER参考答案
D
)语句用于删除存储过程
BCREATETABLE
CDROPPROCEDURE
D其他参考答案
下列()语句用于创建存储过程
D其他参考答案
sp_help属于哪一种存储过程()?
A系统存储过程
B用户定义存储过程
C扩展存储过程
)操作时触发
以下语句创建的触发器是当对表A进行(
CREATETRIGGERABCON表A
FORINSERT,UPDATE,DELETE
AS
插入和更新命令来执行
)执行
A只是修改
B只是插入
C只是删除
D修改,插入,删除参考答案
()允许用户定义一组操作,这些操作通过对指定的表进行删除、或触发。
A存储过程
B视图
C触发器
D索引
C下列可以查看表的行数以及表使用的存储空间信息的系统存储过程是(
Asq_spaceused
Bsq_depends
Csq_help
Dsq_rename参考答案
A以下哪个不是存储过程的优点()
A实现模块化编程,一个存储过程可以被多个用户共享和重用。
B可以加快程序的运行速度。
C可以增加网络的流量。
D可以提高数据库的安全性。
C以下哪个不是存储过程的优点()
替代触发器(insteadof)是在触发触发器的修改操作(
A执行后
B之前
C停止执行时
D同时参考答案
以下不属于存储过程特点的是(
A在删除所涉及表时,同时被删除
B代码执行效率高
C数据查询效率高
D模块化编程参考答案
以下不属于触发器特点的是()
A基于一个表创建,可以针对多个表进行操作
B被触发自动执行
C可以带参数执行
D可以实施更复杂的数据完整性约束参考答案
以下()不是触发触发器的操作。
ASELECT
BUPDATE
CDELETE
DINSERT
关于存储过程和触发器的说法,正确的是()
A都是SQLServer数据库对象
B都可以为用户直接调用
C都可以带参数
D删除表时,都被自动删除参考答案
如果需要在插入表的记录时自动执行一些操作,常用的是()
B函数
D存储过程与函数
对SQLServer中的存储过程,下列说法中正确的是:
存储过程
A不能有输入参数
B没有返回值
C可以自动被执行
D可以嵌套使用
存储过程经过了一次创建以后,可以被调用()次。
A1
B2
C255
D无数
以下()不是存储过程的优点。
A执行速度快
B模块化的设计
C会自动被触发
D保证系统的安全性
C下面关于触发器的描述,错误的是()。
A触发器是一种特殊的存储过程,用户可以直接调用
B触发器表和deleted表没有共同记录
C触发器可以用来定义比CHECK约束更复杂的规则
D删除触发器可以使用DROPTRIGGER命令,也可以使用企业管理器
SQLServer为每个触发器创建了两个临时表,它们是()。
AUpdated和DeletedBInserted和Deleted
CUpdated和InsertedDUpdated和Selected参考答案
在SQL语言中,建立存储过程的命令是()。
BCREATERULE
CCREATEDURE
DCREATEFILE参考答案
已定义存储过程AB,带有一个参数@stnamevarchar(20)
AEXECAB吴小雨?
BEXECAB=吴小雨?
CEXECAB(吴小雨)
D其他3种都可以参考答案
对于下面的存储过程:
CREATEPROCEDUREMyp1@pInt
SELECTSt_name,Age
FROMStudents
WHEREAge=@p
假如要在Students表中查找年龄是20岁的学生,(这个存储过程。
,正确的执行方法为()
)可以正确的调用
AEXECMyp1@p=20BEXECMyp1@p=20CEXECMyp1=20'
DEXECMyp仁20参考答案
当某个表被删除后,该表上的触发器被自动删除。
[参考答案]正确
SQLServer为每个触发器创建了两个临时表,它们是updated和deleted。
[参考答案]错误存储过程是存储在服务器上的一组预编译的Transact-SQL语句。
在SQLSERVER中,触发器的执行是在数据的插入、更新或删除之前执行的。
[参考答案]错误若要修改一个存储过程,可以先删除该存储过程,再重新创建。
[参考答案]正确触发器与表紧密相连,可以看作表定义的一部分。
临时存储过程总是在master数据库中创建。
通常分为局部临时存储过程和全局临时存储过[参考答案]错误
某个表被删除后,该表上的所有触发器将自动被删除。
[参考答案]正确
SQLServer中的存储过程具有5种类型。
存储过程的输出结果可以传递给一个变量。
[参考答案]正确触发器是可在程序中被调用执行。
[参考答案]错误
存储过程是存储在服务器上的一组预编译的Transcat-SQL语句。
[参考答案]正确创建触发器的时候可以不是表的所有者或数据库的所有者。
则返回代
定义一个
[参考答案]错误每个存储过程向调用方返回一个整数返回代码。
如果存储过程没有显式设置返回代码的值,码为0,表示成功。
在SQLServer中,触发器的执行通过EXECUTE命令实现。
在SQLSERVER中,替代触发器的执行是在数据变动之前被触发,对于每个触发操作只能替代触发器。
使用存储过程可以减少网络流量。
[考答案]正确
存储过程使代码具有重用性。
[参考答案]正确触发器不能被调用,它可以自动执行。
创建存储过程的命令关键字CREATEPROCEDU不可以缩写。
[参考答案]错误触发器可以在视图上定义。
[参考答案]错误触发器被激活后自动创建deleted和inserted两个临时表。
ROLLBACKTRANSACTION的意思是回滚事务。
触发器用来定义比CHECK约束更复杂的规则或要求。
通过语句ALTERPROCEDURE改存储过程与删除存储过程然后再新建一个同名存储过程的效果是相同的。
[参考答案]错误
某SQLServer2000数据库中两张表:
商品表(商品号,商品名,商品类型,价格)和销售表(商品号,销售时间,销售数量,销售单价)。
用户需统计指定年份每类商品的销售总数量和销售总利润,要求只列出销售总利润最多的前三类商品的商品类别、销售总数量和销售总利润。
为了完成该统计操作,请按要求将下面的存储过程补充完整。
CREATEPROCp_Sum@yearINT
SELECT(__1__)商品类别,SUM销售数量)AS销售总数量,
(__2__)AS销售总利润
FROM商品表JOIN销售表ON商品表.商品号=销售表.商品号
WHEREyear(销售时间)@year
GROUPBY商品类别
ORDERBY销售总利润(__3__)参考答案
1:
TOP3
2:
(销售单价-成本价)*SUM(销售数量)
3:
DESC降序)
在SQLServer2000中,设有顾客表(顾客号,顾客名,所在地区,年龄),应用系统中需统计指定地区的顾客人数和平均年龄。
请补全下列存储过程代码以完成该功能。
CREATEPROCP_Count@areavarchar(20)
SELECTCOUNT(*)AS人数,(__1__)AS平均年龄FROM顾客表
WHERE所在地区=@area
1:
AVG年龄)
以下代码创建和执行存储过程proc_score,查询S_C_Info表中C_No为“0002”的
St_ID,Score等信息。
CREATEPROCpro_score
SELECTSt_ID,__1__
FROMS_C_Info
WHEREC_No=0002'
执行存储过程proc_score命令为:
EXEC__2__
Score
proc_score
在student_db数据库中创建一个名为“tr_P1”的存储过程,实现根据学生学号,查询该学生的选修课程情况,其中包括该学生的学号、姓名、课程名、课程类型、成绩。
CREATE__1__tr_P1@stlDvarchar(IO)
SELECTSt_Info.St_ID,St_Info.St_Name,C」nfo.C_Name,C」nfo.C_Type,S_C」nfo.Score
FROMSt_lnfo,S_C」nfo,C」nfo
WHERESt_Info.St_ID=S_C_Info.St_IDANDS_C_Info.C_No=
C_lnfo.C_No
调用该存储过程查询“0403060111”学生的选修课程情况。
__2__'
040306011T
PROCEDURE或PROC
EXECUTEtr_P1或EXECtr_P1
触发器主要用于强制复杂的__1—或要求。
业务规则
创建存储过程实际是对存储过程进行定义的过程,主要包含存储过程名称、__1和存储过程的主体部分。
参数
SQLServer中的存储过程具有_1__、用户自定义存储过程、临时存储过程、远程存储过
程、__2__5种类型。
系统存储过程2:
扩展存储过程
有表C_lnfo(C_No,C_NameC_TypeCredit),各属性的含义为课程号、课程名称、课程类别、学分,为该表创建一个触发器tr_AutoSetType,以便插入数据时将课程类别修改为“必修”。
CREATETRIGGERtr_AutoSetTypeONC」nfo
__1__
UPDATEC_lnfoSETC_Type='
必修'
参考答案
FORINSERT用户对数据进行添加、修改和删除时,自动执行的存储过程称为__1__0
触发器
触发器是一种特殊类型的_1__,但不由用户直接调用,而是通过事件被执行。
存储过程
与触发器相关的虚拟表主要有1表和Deleted表两种。
Inserted或INSERTED或
inserted
替代触发器(INSTEADOF)将在数据变动前被触发,对于每个触发操作,只能定义
__1__个INSTEADOF触发器。
一或1
对存储在数据库中的存储过程,可以使用—1—命令或直接按其名称执行。
(答题时,英
文使用大写形式)
EXEC或EXECUTE
存储过程是一种数据库对象,将一组SQL语句和控制流语句的集合以一个存储单兀的形式保存在1上。
服务器
扩展存储过程以“xp_”为前缀定义,只能添加到_1_数据库中。
(答题时,英文使用
小写)
master
删除表中记录后,被删除的记录临时存储在__1—表中。
(答题时,英文使用小写)
deleted
读程序填空。
要求创建一个存储过程myproc,查询指定班级中选修指定课程的学生人
数,并将查询结果通过参数返回。
以下过程调用存储过程查询“材料科学0601”班中选
修“C吾音程序设计基础”的学生人数:
CREATEPROCEDURE[myproc]
@classnameVARCHAR(20),@cnameVARCHAR(20),@countINTOUTPUT
SELECTCOUNT(*)
FROMS_C_lnfosc,st_infos,c_infoc
WHEREc.c_no=sc.c_noANDs.st_id=sc.st_idANDs.Cl_Name=@classnameANDc.C_Name=@cname
执行这个存储过程的吾句段为:
DECLARE@countint
EXECmyproc'
材料科学0601班'
,'
吾言程序设计基础'
__1__
print@count
@countOUTPUT
在存储过程中,使用_1_命令可以无条件退出过程回到调用程序。
RETURN
要删除一个存储过程,则可以使用的语句是:
__1__PROCEDURE
DROP
在SQLServer中,当数据表被修改时,系统可以自动执行的数据库对象
是__1__o
TRIGGER或触发器
SQLServer触发器主要是针对INSERTDELETE__1__语句创建的。
(使用
英文大写答题)
UPDATE
当对表进行__1__操作时触发器不会自动执行。
查询或SELECT
触发器定义在一个表中,当在表中执行_1_、UPDAT或DELET操作时被触发自动执行。
INSERT
在SQLServer服务器上,存储过程是一组预先定义并__1__的Transact-SQL语句。
编译
如同表和视图的修改,当用户需要对存储过程进行修改时,可以通过_1__PR0CEDU命
盼实现。
ALTER