第6章 存储过程与触发器练习题试题知识点.docx
《第6章 存储过程与触发器练习题试题知识点.docx》由会员分享,可在线阅读,更多相关《第6章 存储过程与触发器练习题试题知识点.docx(19页珍藏版)》请在冰豆网上搜索。
![第6章 存储过程与触发器练习题试题知识点.docx](https://file1.bdocx.com/fileroot1/2023-1/23/9b72bef6-45fe-4fcf-a8eb-67dc63b610db/9b72bef6-45fe-4fcf-a8eb-67dc63b610db1.gif)
第6章存储过程与触发器练习题试题知识点
有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与教师职称有关。
实现这个约束的可行方案是( )。
A 在教师表上定义一个视图
B 在教师表上定义一个存储过程
C 在教师表上定义插入和修改操作的触发器
D 在教师表上定义一个标量函数
参考答案
C
在SQLSERVER中,执行带参数的过程,正确的方法为( )。
A 过程名参数
B 过程名(参数)
C 过程名=参数
D ABC均可
参考答案
A
在SQLSERVER服务器上,存储过程是一组预先定义并( )的Transact-SQL语句。
A 保存
B 解释
C 编译
D 编写
参考答案
C
在SQLServer中,触发器不具有( )类型。
A INSERT触发器
B UPDATE触发器
C DELETE触发器
D SELECT触发器
参考答案
D
( )允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。
A 存储过程
B 规则
C 触发器
D 索引
参考答案
C
为了使用输出参数,需要在CREATEPROCEDURE语句中指定关键字( )。
A OPTION
B OUTPUT
C CHECK
D DEFAULT
参考答案
B
下列( )语句用于创建触发器。
A CREATEPROCEDURE
B CREATETRIGGER
C ALTERTRIGGER
D DROPTRIGGER
参考答案
B
下列( )语句用于删除触发器。
A CREATEPROCEDURE
B CREATETRIGGER
C ALTERTRIGGER
D DROPTRIGGER
参考答案
D
下列( )语句用于删除存储过程。
A CREATEPROCEDURE
B CREATETABLE
C DROPPROCEDURE
D 其他
参考答案
C
下列( )语句用于创建存储过程。
A CREATEPROCEDURE
B CREATETABLE
C DROPPROCEDURE
D 其他
参考答案
A
sp_help属于哪一种存储过程( )?
A 系统存储过程
B 用户定义存储过程
C 扩展存储过程
D 其他
参考答案
A
以下语句创建的触发器是当对表A进行( )操作时触发。
CREATE TRIGGER ABC ON 表A
FOR INSERT, UPDATE, DELETE
AS
……
A 只是修改
B 只是插入
C 只是删除
D 修改,插入,删除
参考答案
D
( )允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。
A 存储过程
B 视图
C 触发器
D 索引
参考答案
C
下列可以查看表的行数以及表使用的存储空间信息的系统存储过程是( )。
A sq_spaceused
B sq_depends
C sq_help
D sq_rename
参考答案
A
以下哪个不是存储过程的优点( )
A 实现模块化编程,一个存储过程可以被多个用户共享和重用。
B 可以加快程序的运行速度。
C 可以增加网络的流量。
D 可以提高数据库的安全性。
参考答案
C
以下哪个不是存储过程的优点( )
A 实现模块化编程,一个存储过程可以被多个用户共享和重用。
B 可以加快程序的运行速度。
C 可以增加网络的流量。
D 可以提高数据库的安全性。
参考答案
C
替代触发器(insteadof)是在触发触发器的修改操作( )执行。
A 执行后
B 之前
C 停止执行时
D 同时
参考答案
B
以下不属于存储过程特点的是( )。
A 在删除所涉及表时,同时被删除
B 代码执行效率高
C 数据查询效率高
D 模块化编程
参考答案
A
以下不属于触发器特点的是( )。
A 基于一个表创建,可以针对多个表进行操作
B 被触发自动执行
C 可以带参数执行
D 可以实施更复杂的数据完整性约束
参考答案
C
以下( )不是触发触发器的操作。
A SELECT
B UPDATE
C DELETE
D INSERT
参考答案
A
关于存储过程和触发器的说法,正确的是( )。
A 都是SQLServer数据库对象
B 都可以为用户直接调用
C 都可以带参数
D 删除表时,都被自动删除
参考答案
A
如果需要在插入表的记录时自动执行一些操作,常用的是( )。
A 存储过程
B 函数
C 触发器
D 存储过程与函数
参考答案
C
对SQLServer中的存储过程,下列说法中正确的是:
存储过程( )。
A 不能有输入参数
B 没有返回值
C 可以自动被执行
D 可以嵌套使用
参考答案
D
存储过程经过了一次创建以后,可以被调用( )次。
A 1
B 2
C 255
D 无数
参考答案
D
以下( )不是存储过程的优点。
A 执行速度快
B 模块化的设计
C 会自动被触发
D 保证系统的安全性
参考答案
C
下面关于触发器的描述,错误的是( )。
A 触发器是一种特殊的存储过程,用户可以直接调用
B 触发器表和deleted表没有共同记录
C 触发器可以用来定义比CHECK约束更复杂的规则
D 删除触发器可以使用DROPTRIGGER命令,也可以使用企业管理器
参考答案
A
SQLServer为每个触发器创建了两个临时表,它们是( )。
A Updated和Deleted
B Inserted和Deleted
C Updated和Inserted
D Updated和Selected
参考答案
B
在SQL语言中,建立存储过程的命令是( )。
A CREATEPROCEDURE
B CREATERULE
C CREATEDURE
D CREATEFILE
参考答案
A
已定义存储过程AB,带有一个参数@stnamevarchar(20),正确的执行方法为( )。
A EXEC ABˈ吴小雨ˈ
B EXEC AB=ˈ吴小雨ˈ
C EXEC AB(吴小雨)
D 其他3种都可以
参考答案
A
对于下面的存储过程:
CREATEPROCEDUREMyp1@pInt
AS
SELECTSt_name,Age
FROMStudents
WHEREAge=@p
假如要在Students表中查找年龄是20岁的学生,( )可以正确的调用这个存储过程。
A EXEC Myp1 @p=´20´
B EXEC Myp1 @p=20
C EXEC Myp1=´20´
D EXEC Myp1=20
参考答案
B
当某个表被删除后,该表上的触发器被自动删除。
[参考答案] 正确
SQLServer为每个触发器创建了两个临时表,它们是updated和deleted。
[参考答案] 错误
存储过程是存储在服务器上的一组预编译的Transact-SQL语句。
[参考答案] 正确
在SQLSERVER中,触发器的执行是在数据的插入、更新或删除之前执行的。
[参考答案] 错误
若要修改一个存储过程,可以先删除该存储过程,再重新创建。
[参考答案] 正确
触发器与表紧密相连,可以看作表定义的一部分。
[参考答案] 正确
临时存储过程总是在master数据库中创建。
通常分为局部临时存储过程和全局临时存储过程。
[参考答案] 错误
某个表被删除后,该表上的所有触发器将自动被删除。
[参考答案] 正确
SQLServer中的存储过程具有5种类型。
[参考答案] 正确
存储过程的输出结果可以传递给一个变量。
[参考答案] 正确
触发器是可在程序中被调用执行。
[参考答案] 错误
存储过程是存储在服务器上的一组预编译的Transcat-SQL语句。
[参考答案] 正确
创建触发器的时候可以不是表的所有者或数据库的所有者。
[参考答案] 错误
每个存储过程向调用方返回一个整数返回代码。
如果存储过程没有显式设置返回代码的值,则返回代码为0,表示成功。
[参考答案] 正确
在SQLServer中,触发器的执行通过EXECUTE命令实现。
[参考答案] 错误
在SQLSERVER中,替代触发器的执行是在数据变动之前被触发,对于每个触发操作只能定义一个替代触发器。
[参考答案] 正确
使用存储过程可以减少网络流量。
[考答案] 正确
存储过程使代码具有重用性。
[参考答案] 正确
触发器不能被调用,它可以自动执行。
[参考答案] 正确
在SQL SERVER中,触发器的执行是在数据的插入、更新或删除之前执行的。
[参考答案] 错误
创建存储过程的命令关键字CREATEPROCEDURE不可以缩写。
[参考答案] 错误
触发器可以在视图上定义。
[参考答案] 错误
触发器被激活后自动创建deleted和inserted两个临时表。
[参考答案] 错误
ROLLBACKTRANSACTION的意思是回滚事务。
[参考答案] 正确
触发器用来定义比CHECK约束更复杂的规则或要求。
[参考答案] 正确
通过语句ALTERPROCEDURE修改存储过程与删除存储过程然后再新建一个同名存储过程的效果是相同的。
[参考答案] 错误
某SQL Server 2000数据库中两张表:
商品表(商品号,商品名,商品类型,价格)和销售表(商品号,销售时间,销售数量,销售单价)。
用户需统计指定年份每类商品的销售总数量和销售总利润,要求只列出销售总利润最多的前三类商品的商品类别、销售总数量和销售总利润。
为了完成该统计操作,请按要求将下面的存储过程补充完整。
CREATE PROC p_Sum @year INT
AS
SELECT(__1__ ) 商品类别,SUM(销售数量) AS 销售总数量,(__2__ ) AS 销售总利润
FROM 商品表 JOIN 销售表 ON 商品表. 商品号=销售表.商品号
WHERE year(销售时间) = @year
GROUP BY 商品类别
ORDER BY 销售总利润(__3__)
参考答案
1:
TOP 3
2:
(销售单价-成本价)*SUM(销售数量)
3:
DESC(降序)
在SQL Server 2000中,设有顾客表(顾客号, 顾客名, 所在地区, 年龄),应用系统中需统计指定地区的顾客人数和平均年龄。
请补全下列存储过程代码以完成该功能。
CREATE PROC P_Count @area varchar(20)
AS
SELECT COUNT(*)AS 人数,(__1__ )AS平均年龄FROM 顾客表WHERE 所在地区=@area
参考答案
1:
AVG(年龄)
以下代码创建和执行存储过程proc_score,查询S_C_Info表中C_No为“0002”的St_ID,Score等信息。
CREATE PROC pro_score
AS
SELECTSt_ID, __1__
FROMS_C_Info
WHEREC_No=‘0002’
执行存储过程proc_score命令为:
EXEC __2__
参考答案
1:
Score
2:
proc_score
在student_db数据库中创建一个名为“tr_P1”的存储过程,实现根据学生学号,查询该学生的选修课程情况,其中包括该学生的学号、姓名、课程名、课程类型、成绩。
CREATE __1__ tr_P1 @stID varchar(10)
AS
SELECTSt_Info.St_ID,St_Info.St_Name,C_Info.C_Name,C_Info.C_Type,S_C_Info.Score
FROMSt_Info,S_C_Info,C_Info
WHERESt_Info.St_ID=S_C_Info.St_ID AND S_C_Info.C_No=C_Info.C_No
调用该存储过程查询“0403060111”学生的选修课程情况。
__2__ ´0403060111´
参考答案
1:
PROCEDURE 或 PROC
2:
EXECUTEtr_P1 或 EXECtr_P1
触发器主要用于强制复杂的__1__或要求。
参考答案
1:
业务规则
创建存储过程实际是对存储过程进行定义的过程,主要包含存储过程名称、__1__和存储过程的主体部分。
参考答案
1:
参数
SQLServer中的存储过程具有__1__、用户自定义存储过程、临时存储过程、远程存储过程、__2__5种类型。
参考答案
1:
系统存储过程
2:
扩展存储过程
有表C_Info(C_No,C_Name,C_Type,Credit),各属性的含义为课程号、课程名称、课程类别、学分,为该表创建一个触发器tr_AutoSetType,以便插入数据时将课程类别修改为“必修”。
CREATE TRIGGER tr_AutoSetType ON C_Info
__1__
AS
UPDATEC_InfoSETC_Type=‘必修’
参考答案
1:
FORINSERT
用户对数据进行添加、修改和删除时,自动执行的存储过程称为__1__。
参考答案
1:
触发器
触发器是一种特殊类型的__1__,但不由用户直接调用,而是通过事件被执行。
参考答案
1:
存储过程
与触发器相关的虚拟表主要有__1__表和Deleted表两种。
参考答案
1:
Inserted 或 INSERTED 或
inserted
替代触发器(INSTEADOF)将在数据变动前被触发,对于每个触发操作,只能定义__1__个INSTEADOF触发器。
参考答案
1:
一 或 1
对存储在数据库中的存储过程,可以使用__1__命令或直接按其名称执行。
(答题时,英文使用大写形式)
参考答案
1:
EXEC 或 EXECUTE
存储过程是一种数据库对象,将一组SQL语句和控制流语句的集合以一个存储单元的形式保存在__1__上。
参考答案
1:
服务器
扩展存储过程以“xp_”为前缀定义,只能添加到__1__数据库中。
(答题时,英文使用小写)
参考答案
1:
master
删除表中记录后,被删除的记录临时存储在__1__表中。
(答题时,英文使用小写)
参考答案
1:
deleted
读程序填空。
要求创建一个存储过程myproc,查询指定班级中选修指定课程的学生人数,并将查询结果通过参数返回。
以下过程调用存储过程查询“材料科学0601”班中选修“C语音程序设计基础”的学生人数:
CREATEPROCEDURE[myproc]
@classnameVARCHAR(20),@cnameVARCHAR(20),@countINTOUTPUT
AS
SELECTCOUNT(*)
FROMS_C_Infosc,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班´,´C语言程序设计基础´,__1__
print@count
参考答案
1:
@countOUTPUT
在存储过程中,使用__1__命令可以无条件退出过程回到调用程序。
参考答案
1:
RETURN
要删除一个存储过程,则可以使用的语句是:
__1__PROCEDURE
参考答案
1:
DROP
在SQLServer中,当数据表被修改时,系统可以自动执行的数据库对象是 __1__ 。
参考答案
1:
TRIGGER 或 触发器
SQLServer触发器主要是针对INSERT、DELETE、__1__ 语句创建的。
(使用英文大写答题)
参考答案
1:
UPDATE
当对表进行__1__ 操作时触发器不会自动执行。
参考答案
1:
查询 或 SELECT
触发器定义在一个表中,当在表中执行__1__、UPDATE或DELETE操作时被触发自动执行。
参考答案
1:
INSERT
在SQLServer服务器上,存储过程是一组预先定义并__1__的Transact-SQL语句。
参考答案
1:
编译
如同表和视图的修改,当用户需要对存储过程进行修改时,可以通过__1__PROCEDURE命令实现。
参考答案
1:
ALTER