版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机三级数据库技术(数据库后台编程技术)机试模拟试卷1(共4套)(共112题)计算机三级数据库技术(数据库后台编程技术)机试模拟试卷第1套一、选择题(本题共14题,每题1.0分,共14分。)1、下列关于SQLServer2008存储过程的说法,错误的是()A、存储过程的输入参数不能有默认值B、存储过程允许有多个输入参数C、存储过程能以输出参数的形式将多个值返回给调用者D、存储过程可以向调用者返回执行是否成功的状态值标准答案:A知识点解析:创建存储过程的SQL语句为CREATEPROCEDURE。其语法格式为:2、设在SQLServer2008某数据库中有销售表(商品号,销售时间,销售数量,销售价格),其中商品号的类型为char(6),销售价格的类型为int。现要定义统计指定商品销售总价的标量函数。有下列定义该标量函数的语句Ⅰ.CreateFUNCTIONdbo.GetTotal(@GoodIDchar(6))ReturnsintASBEGINReturn(SELECTSUM(销售价格)FROM销售表WHERE商品号=@GoodID)ENDⅡ.CreateFUNCTIONdbo.GetTotal(@GoodIDchar(6))ReturnsintASBEGINReturns(SELECTSUM(销售价格)FROM销售表WHERE商品号=@GoodID)ENDⅢ.CreateFUNCTIONdbo.GetTotal(@GoodIDchar(6))ReturnsintBEGINReturn(SELECTSUM(销售价格)FROM销售表WHERE商品号=@GoodID)ENDⅣ.CreateFUNCTIONdbo.GetTotal(@GoodIDchar(6))ReturnsintReturns(SELECTSUM(销售价格)FROM销售表WHERE商品号=@GoodID)上述语句中,正确的是()A、仅Ⅰ和ⅡB、仅Ⅲ和ⅣC、仅Ⅱ和ⅣD、仅Ⅰ和Ⅲ标准答案:D知识点解析:标量函数返回一个确定类型的标量值。函数体语句定义在BEGIN-END语句内,其中包含了可以返回值的Transact-SQL命令。创建标量函数的语法如下:CREATEFUNCTION[owner_name.]function_name([{@parameter_name[AS][type_schema_name.]parameter_data_type[=default]}[,…n]])RETURNSreturn_data_type[AS]BEGINfunction_bodyRETURNscalar_expressionEND[;]3、在SQLServer2008中,要对结果集中的每行数据进行单独处理,需要使用游标来实现。下列关于游标的说法,错误的是()。A、游标由游标结果集和游标当前行指针两部分组成B、如果声明游标时不指定SCROLL选项,则在对游标进行FETCH操作时只能指定NEXT和LAST选项C、在对游标进行FETCH操作后,可以使用@@FETCH_STATUS变量判断数据提取状态D、当使用CLOSE语句关闭游标后,需使用DEALLOCATE命令释放系统为游标分配的资源标准答案:B知识点解析:如果未在声明游标时指定SCROLL,则NEXT是唯一支持的提取选项。故答案为B项。4、设在SQLServer2008中有如下定义触发器的语句:CREATETRIGGERtriONT1INSTEADOFINSERTAS……下列关于该触发器执行机制的说法,正确的是()。A、当在T1表上执行INSERT操作时,先执行INSERT操作,然后再执行tri触发器B、当在T1表上执行INSERT操作时,只执行tri触发器,而不实际执行INSERT操作C、当在T1表上执行INSERT操作时,先执行tri触发器,然后再实际执行INSERT操作D、当在T1表上执行INSERT操作时,先执行INSERT操作,如果操作正确,则无需执行tri触发器标准答案:B知识点解析:使用FOR或者AFTER选项定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行该触发器。使用INSTEADOF选项定义的触发器为前触发型触发器,在这种模式的触发器中,指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代触发的操作。因此,可知本题中属于前触发器,即只执行tri触发器,而不实际执行INSERT操作。故答案为B项。5、下列关于存储过程的说法,错误的是()。A、利用存储过程可以进行模块化程序设计B、存储过程可以接受多个输入参数,并可返回多个输出结果C、存储过程是指存储在客户端的可调用执行的代码段D、存储过程的返回结果可以是一个集合标准答案:C知识点解析:存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集及返回值。利用存储过程可以进行模块化程序设计是存储过程优点之一。故答案为C选项。6、下列关于触发器的说法,正确的是()。A、利用触发器可以提高数据查询性能B、利用触发器可以实施业务规则C、利用触发器可以提高数据更改性能D、触发器主要用于防止非法用户访问标准答案:B知识点解析:触发器是一种特殊的存储过程,其特殊性在于它不需要由用户来直接调用,而是在对表中的数据进行UPDATE、INSERT或DELETE操作时自动触发执行的。触发器通常用于保证业务规则和数据完整性,其主要优点是用户可以用编程的方法来实现复杂的处理逻辑和商业规则,增强了数据完整性约束的功能。故答案为B选项。7、在开发数据库应用系统时,使用存储过程可以提高数据访问效率,降低网络流量。下列关于存储过程的说法,错误的是()A、存储过程可以接受输入参数,并可将执行结果以输出参数形式返回B、存储过程可以有多个输入参数,但只能有一个输出参数C、定义存储过程时,在一个存储过程中可以同时包含数据的增、删、改、查操作D、存储过程的输入参数和输出参数均可有默认值标准答案:B知识点解析:PL╱SQL主要由两种类型构成,即命名块和匿名块。匿名块每次执行时都需要进行编译,不能被存储到数据库中,也不能在其它的PL╱SQL中调用。存储过程和函数是命名块,它们被编译后保存在数据库中,可以被反复调用,运行速度块。其结构为:CREATEProcedure过程名(参数列表)AS<PL╱SQL块>;参数列表可以为输入参数、输出参数,且输入、输出参数均可以有多个。所以选B。8、在SQLServer2008中,设有游标c1,下列关于语句“FETCHNEXTFROMc1”的说法,正确的是()。A、返回游标当前行指针所指的数据行,并且将当前行指针下移一行B、返回紧跟在游标当前行指针之后的数据行,并且将当前行指针下移一行C、该语句必须是打开游标之后第一个执行的语句D、该语句必须是声明完游标之后第一个执行的语句标准答案:B知识点解析:NEXT关键字的作用是返回紧跟在当前行之后的数据行,并且当前行递增为结果行。如果FETCHNEXT是对游标的第一次提前操作,则返回结果集中的第一行。故答案为B项。9、设在SQLServer2008中有如下定义存储过程的语句:CREATEPROCp1@xchar(10),@yint,@zint下列关于调用该存储过程的语句,正确的是()。A、EXECp1’abc’,200,100B、EXECp1’abc’,100C、EXECp1’abc’,default,100D、EXECp1@x=’abc’,@z=100标准答案:A知识点解析:调用存储过程相应的参数个数、类型要一一对应。定义存储过程的语句中第一个参数是字符型,第2个和第3个参数是整型,满足题意的选择A选项。故答案为A选项。10、设在SQLServer中有如下定义触发器的语句:CREATETRIGGERtri_1ONT1FORINSERT,DELETEAS…下列关于该触发器作用的说法,正确的是()。A、在T1表上定义了一个由插入或删除操作引发的前触发型触发器B、在T1表上定义了一个由插入或删除操作引发的后触发型触发器C、该触发器定义有误,不能定义一个由多个操作引发执行的后触发型触发器D、该触发器定义有误,不能定义一个由多个操作引发执行的前触发型触发器标准答案:B知识点解析:建立DML触发器SQL语句为CREATETRIGGER,其语法格式为:CREATETRIGGER<Trigger_name>ON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}AS{sql_statement}…使用FOR或AFTER选项定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。根据题意定义的触发器语句知在T1表上定义了一个由插入或删除操作引发的后触发型触发器。故答案为B选项。11、下列关于存储过程的说法,错误的是()。A、在定义存储过程的语句中,只可以包含数据查询语句B、在定义存储过程的语句中,可以包含增、删、改、查语句C、存储过程可以有多个输入参数和多个输出参数D、存储过程的输出参数必须使用OUTPUT关键词标识标准答案:A知识点解析:在创建存储过程时可以声明一个或多个参数。OUTPUT指示参数是输出参数。在定义存储过程的语句中,可以包含增、删、改、查语句和其他SQL数据查询语句创建存储过程的SQL语句为CREATEPROCEDURE。其语法格式为:CREATE{PROC|PROCEDURE}[schema_name.]procedure_name[{@parameter[type_schema_name.]data_type}[=default][OUT|OUTPUT]][,…n][WITHRECOMPILE]AS{<sql_statement>[;][…n]}[;]<sqlstatement>::={[BEGIN]statements[END]}故答案为A选项。12、有关系模式:系(系号,系名,系办公电话),教师(教师号,教师名,职称,聘任日期,工资,所在系号)。现要定义下列约束:Ⅰ.系号是系关系的主码,教师号是教师关系的主码Ⅱ.职称列的取值只能为“教授”,“副教授”,“讲师”,“助理”和“其他”Ⅲ.教授的默认工资为10000元,副教授的默认工资为8000元,讲师的默认工资为5000元Ⅳ.每个教师的所在系号不能为空,且其值必须在系关系中存在若在数据库中实现以上约束,需要使用触发器才能实现的是()A、仅Ⅰ和ⅡB、仅Ⅲ和ⅣC、仅ⅢD、仅Ⅰ和Ⅳ标准答案:C知识点解析:触发器使用场合为完成比CHECK约束更复杂的数据约束,为保证数据库性能而维护的非规范化数据,实现复杂的业务规则。CHECK只能实现同一个表的列之间的取值约束。Ⅲ是对同一个列中元素取值之间的约束,Ⅳ选项是在不同表中列之间的取值约束关系都不能用CHECK实现,但可以用外键约束加非空约束实现。所以答案为C。13、设有教师表(教师号,姓名,年龄,性别,所在系号),系表(系号,系名)。用户将非常频繁地在这两张表上执行如下查询:SELECT教师号,姓名,系名FROM教师表TJOIN系表DONT.所在系号=D.系号;为了提高查询效率,下列最适合存储上述表数据的文件类型是()A、堆文件B、索引文件C、聚集文件D、散列文件标准答案:C知识点解析:聚集文件是一种具有多种记录类型的文件,它存储了来自多个关系表的数据,每个关系表对应文件中的一种记录类型。聚集文件将不同关系表中有关联的记录存储在同一磁盘块内,从而减少数据库多表查询操作时的磁盘访问次数,提高系统I╱O速度和查找处理速度。该题中用户频繁对两个表进行关联查询,符合聚集文件的特性,因此采用聚集文件能有效提高查询效率。14、假如有两个表的连接是这样的:table_1INNERJOINtable_2其中table_1和table_2是两个具有公共属性的表,这种连接会生成()结果集。A、包括table_1中的所有行,不包括table_2的不匹配行B、包括table_2中的所有行,不包括table_1的不匹配行C、包括和两个表的所有行D、只包括table_1和table_2满足条件的行标准答案:D知识点解析:某些情况下,需要把数字数据类型显示为相应的文本名称,这就碰到了多表连接建立记录集的问题。多表连接的类型主要有1eftjoin、rightjoin和innerjoin。其主要区别如下:①leftjoin(左联接),返回包括左表中的所有记录和右表中联结字段相等的记录;②rightjoin(右联接),返回包括右表中的所有记录和左表中联结字段相等的记录;③innerjoin(等值连接),只返回两个表中联结字段相等的行。因此本题采用innerjoin,结果集将返回包括table_1和table_2都满足条件的行。二、应用题(本题共14题,每题1.0分,共14分。)15、在SQLServer2008中,用于判断游标数据提取状态的全局变量是________。标准答案:@@FETCH_STATUS知识点解析:游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。游标经常会和全局变量@@FETCH_STATUS与WHILE循环来共同使用,以达到遍历游标所在数据集的目的。在执行一条fetch语句后,必须在对另一游标执行另一fetch语句前测试@@FETCH_STATUS。16、设在SQLServer2008某数据库中有购买表(顾客号,商品号,购买时间),现要查询C02顾客购买过但C01顾客没有购买过的商品。请补全下列语句。SELECT商品号FROM购买表WHERE顾客号=’C02’________SELECT商品号FROM购买表WHERE顾客号=’C01’;标准答案:EXCEPT知识点解析:EXCEPT是它在去掉两个或多个集合中重复数据的之后,只会保留第一个结果集中的数据。该题其实就是查询表C01,看表C01的数据在表C02中是否存在,如果存在,则删掉。17、在SQLServer2008中,计算两个日期之差的函数是________。标准答案:datediff()知识点解析:DATEDIFF()函数可以返回两个日期之间的天数。DATEDIFF(datepart,startdate,enddate),startdate和enddate参数是合法的日期表达式。例如SQL表达式:SELECTDATEDIFF(day,’2008-12-30’,’2008-12-29’)ASDiffDate18、在T-SQL中,提取游标cur1第5行数据的语句是________ABSOLUTE5FROMcur1…标准答案:FETCH知识点解析:FETCH的功能是通过Transact-SQL服务器游标检索特定行,具体语法:FETCH[[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@nvar}|RELATIVE{n|@nvar}]FROM]{{[GLOBAL]cursor_name}@cursor_variable_name}[INTO@variable_name[,…n]]参数说明:NEXT:紧跟当前行返回结果行,并且当前行递增为返回行。如果FETCHNEXT为对游标的第一次提取操作,则返回结果集中的第一行。NEXT为默认的游标提取选项。PRIOR:搜索返回紧邻当前行前面的结果行,并且当前行递减为返回行。如果FETCHPRIOR:为对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。FIRST:返回游标中的第一行并将其作为当前行LAST:返回游标中的最后一行并将其作为当前行搜索。ABSOLUTE{n|@nvar}:如果n或@nvar为正,则返回从游标头开始向后的第n行,并将返回行变成新的当前行。如果n或@nvar为负,则返回从游标末尾开始向前的第n行,并将返回行变成新的当前行。如果n或@nvar为0,则不返回行。n必须是整数常量,并且@nvar的数据类型必须为smallint、tinyint或intoRELATIVE{n|@nvar}:如果n或@nvar为正,则返回从当前行开始向后的第n行,并将返回行变成新的当前行。如果n或@nvar为负,则返回从当前行开始向前的第n行,并将返回行变成新的当前行。如果n或@nvar为0,则返回当前行。在对游标进行第一次提取时,如果在将n或@nvar设置为负数或0的情况下指定FETCHRELATIVE,则不返回行。n必须是整数常量,@nvar的数据类型必须为smallint、tinyint或int。19、设选课系统中有学生表Student(Sno,Sname)、学生选课表SC(Sno,Cno,Grade),现要查询选了C01课程的学生姓名,请补全下列语句:SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHERECno=’C01’AND________)标准答案:Student.Sno=SC.Sno或SC.Sno=Student.Sno或Sno=Student.Sno或Student.Sno=Sno知识点解析:本题考查的是等值连接查询,具体语法是:表名1.列名1=表名2.列名2。20、设在SQLServer某数据库中有表选课(学号,课程号,成绩),现要定义不能删除成绩不及格学生的选课记录的触发器。请补全下列语句:CREATETRIGGERtri_de1ON选课AFTERDELETEASIFEXISTS(SELECT*FROM________WHERE成绩<60)ROLLBACK标准答案:DELETED知识点解析:DELETED表用于存储DELETE和UPDATE语句所影响的行的复本。在执行DELETE操作时,被删除的数据被保存在DELETED表中。根据题意,创建后触发型触发器后执行DELETE操作,把不能删除成绩不及格学生的选课记录保存在DELETED表中。故答案为DELETED。21、请补全下列在SQLServer2008中定义前触发型触发器的语句。CREATETRIGGERtr_1ONT________INSERTAS…标准答案:INSTEADOF知识点解析:如果用户要通过数据操作语言(DML)事件编辑数据,则执行DML触发器。DML事件是针对表或视图的INSERT、UPDATE或DELETE语句。建立DML触发器的SQL语句为CREATETRIGGER,其语法格式为:CREATETRIGGER[schema_name.]trigger_nameON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}AS{sql_statement}[;]后触发型触发器主要使用FOR或AFTER选项定义的。可以使用INSTEADOF选项定义前触发型触发器,在一个表的每个数据更改操作上只能定义一个前触发型触发器。故答案是INSTEADOF。22、在T-SQL中,修改触发器tri1的语句是________tri1…标准答案:ALTERTRIGGER知识点解析:创建触发器用CREATE语句,修改触发器用ALTER语句,删除触发器用DROP语句。23、在SQLServer2008中,删除函数func1的SQL语句是________func1。标准答案:DROPFUNCTION知识点解析:在SQLServer2008中,可以使用DROPFUNCTION语句从当前数据库中删除一个或多个用户自定义函数。24、设在SQLServer2008中,有如下定义的存储过程:CREATEPROCP1@deptvarhcar(30)=’计算机系’,@xintAS……现要调用该存储过程,并且第一个参数用存储过程的默认值。请补全下列语句:EXECP1________,20标准答案:DEFAULT知识点解析:DEFAULT约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。故答案为DEFAULT。25、在SQLServer中,设已声明了游标c1,现要从该游标提取数据,请补全下列语句:________NEXTFROMC1标准答案:FETCH知识点解析:游标被声明和打开之后,游标的当前行指针就位于结果集的第一行位置,可以使用FETCH语句从游标结果集中按行提取数据。故答案为FETCH。26、设SQLServer2008中有如下定义内联表值函数的语句,请补全下列语句。CREATEFUNCTIONf_x(@xint)RETURNS________AS…标准答案:table知识点解析:定义内联表值函数的语法为:CREATEFUNCTION[schema_name.]function_name([{@parameter_name[AS][type_schema_name.]parameter_data_type[=default]}[,…n]])RETURNSTABLE[AS]RETURN[(]select_stmt[)][;]本题中RETURNS关键词后面是TABLE,故答案为TABLE。27、设在SQLServer2008中,要在T1表的c1列上建立一个非聚集的唯一索引。请补全下列语句:CREATE________NONCLUSTEREDINDEXidx_t1ONT1(C1)标准答案:UNIQUE知识点解析:关键字UNIQUE是用来注明该索引是唯一索引,关键字NONCLUSTERED是用来注明该索引是非聚集索引,关键字CLUSTERED是用来注明该索引是聚集索引。28、设某数据库中有旅客表A(旅客编号,城市)和旅客表B(旅客编号,城市),现将所有旅客的数据存储这两张表中。请补全如下查询语句,使得该查询语句能查询所有旅客所在的全部的不重复的城市。SELECT城市FROM旅客表A________SELECT城市FROM旅客表B标准答案:UNION知识点解析:SQL中的集合操作符IN、EXCEPT、INTERSECT和UNION的用法分别为:①IN,确定给定的值是否与子查询或列表中的值相匹配,使其得以选择与列表中的任意一个值匹配的行;②EXCEPT,指在第一个集合中存在、但是不存在手第二个集合中的数据;③INTERSECT,是指在两个集合中都存在的数据;④UNION,操作符用于合并两个或多个SELECT语句的结果集,对于UNON操作符,请注意,UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。SQL的UNION子句语法是合并两个或多个查询语句的结果集,并且自动删除合并后结果集中的重复记录。计算机三级数据库技术(数据库后台编程技术)机试模拟试卷第2套一、选择题(本题共15题,每题1.0分,共15分。)1、已知有关系R(A,B,C),其中A是主码,现有如下创建索引的SQL语句:CREATECLUSTEREDINDEXidx1ONR(B)则下列说法中正确的是()。A、idx1既是聚集索引,也是主索引B、idx1是聚集索引,但不是主索引C、idx1是主索引,但不是聚集索引D、idx1既不是聚集索引,也不是主索引标准答案:B知识点解析:关键字CLUSTERED表明该索引属于聚集索引,可以排除C、D。由于建立在主码上的索引才是主索引,所以A错。故选择B选项。2、设有购买表(顾客号,商品号,购买时间)。现要查询2012年顾客A购买了但顾客B没有购买的商品。有下列查询语句:A、仅Ⅰ和ⅡB、仅Ⅰ和ⅢC、仅Ⅰ和ⅣD、全部标准答案:A知识点解析:Ⅰ选项中INTERSECT返回两个集合皆有的数据,该SQL语句返回顾客A和B都购买的商品号,不符合题意;Ⅳ选项中的UNION查询出了顾客A购买的商品,通过UNION关键字合并了顾客B没有购买的商品,因此总的视图为顾客A购买的商品和B没有购买的商品总和,不符合要求。Ⅰ、Ⅱ实现的是顾客A购买商品集合与顾客B购买商品集合的差集。因此满足要求的为Ⅰ和Ⅱ,答案为A。3、下列关于SQLServer2008触发器的说法,错误的是()。A、触发器可用于实现复杂的业务规则B、使用触发器实现数据完整性的效率通常低于CHECK约束C、在同一个表的同一个操作上可以建立多个后触发型触发器D、当前触发型触发器执行时,引发触发器执行的操作语句已执行完毕标准答案:D知识点解析:前触发型触发器是在引发该触发器执行的操作语句执行之前激活的触发器,而后触发器就是在语句执行之后激活的触发器。根据触发器的特点可知D选项错误。故选择D选项。4、下列关于SQLServer2008触发器的说法,错误的是()。A、利用登录触发器可以实现用户登录审计B、在视图上可以定义AFTER型触发器,但不可以定义INSTEADOF型触发器C、在一个表上可以建立多个名称不同的针对同一个操作的AFTER型触发器D、针对一个表的同一个操作只能定义一个INSTEADOF型触发器标准答案:B知识点解析:不能在视图上定义AFTER型触发器,故答案为B选项。5、下列关于存储过程的说法,错误的是()。A、存储过程是调用执行的、存储在服务器端的代码段B、利用存储过程可以提高数据操作性能C、存储过程可以接受多个输入参数,但只能有一个输出参数D、利用存储过程可以提升数据的安全性标准答案:C知识点解析:存储过程可以接受多个输入参数,也可以接受多个输出参数。故答案为C选项。6、下列关于存储过程的说法,正确的是()。A、一个存储过程不能有多个输入参数B、一个存储过程不能有多个输出参数C、一个存储过程可以有多个输入参数,但只能有一个输出参数D、一个存储过程可以同时有输入参数和输出参数标准答案:D知识点解析:在创建存储过程时可以声明一个或多个参数。除非定义了参数的默认值或者将参数设置为等于另外一个参数,否则用户在调用存储过程时必须为每个声明的参数提供值。一个存储过程最多可以有2100个参数。故答案为D选项。7、在SQLServer2008中,下列关于触发器的说法,正确的是()。A、INSERTEDI临时表只能由INSERT操作引发的触发器生成B、对于UPDATE操作,触发器将生成UPDATED临时表C、触发器可以实现不同表中的列之间的相互取值约束D、触发器可以提高数据的更改效率标准答案:C知识点解析:触发器是一种特殊的存储过程,其特殊性在于它不需要由用户来直接调用,而是在对表中的数据进行UPDATE、INSERT或DELETE操作时自动触发执行的。触发器通常用于保证业务规则和数据完整性,其主要优点是用户可以用编程的方法来实现复杂的处理逻辑和商业规则,增强了数据完整性约束的功能。在触发器语句中可以使用两个特殊的临时工作表为INSERTED表和DELETED表。这两个表是在用户执行数据的更改操作时,SQLServer自动创建和管理的。这两个表驻留在内存中,其结构同触发器所作用的基本表的结构,并且只可以被触发器使用,但在触发器中不能直接对这两个临时表中的数据进行更改。DELETED表用子存储DELETE和UPDATE语句所影响的行的副本。INSERTED表用于存储INSERT和UPDATE语句所影响的行的副本。故答案为C项。8、在SQLServer2008中,设有职工表(职工号,姓名,所在部门,工资),现要建立查询指定部门平均工资的标量函数。下列语句中正确的是()。A、CREATEFUNCTIONdbo.f_AvgSaRETURNSINTASBEGINRETURN(SELECTAVG(工资)FROM职工表WHERE所在部门=@dept)ENDB、CREATEFUNCTIONdbo.f_AvgSalary(@deptvarchar(20))RETURNSINTASBEGINDECLARE@xINTSET@x=SELECTAVG(工资)FROM职工表WHERE所在部门=@deptRETURN(@x)ENDC、CREATEFUNCTIONdbo.f_AvgSalary(@deptvarchar(20))RETURNSINTASBEGINRETURN(SELECTAVG(工资)FROM职工表WHERE所在部门=@deptGROUPBY所在部门)[k1]ENDD、CREATEFUNCTIONdbo.f_AvgSalary(@deptvarchar(20))RETURNSINTASBEGINDECLARE@xINTSET@x=SELECTAVG(工资)FROM职工表WHERE所在部门=@deptGROUPBY所在部门RETURN(@x)END标准答案:A知识点解析:GROUPBY子句的作用是将查询的结果按照指定的值进行分组,而题目要求查询指定部门的平均工资,因此并不需要分组语句,可以排除C、D。SET语句主要作用是给变量赋值。一个变量只有一个值。而一个部门可能存在一个或多个人平均工资是一样的,所以选项B不正确。故选择A选项。9、下列关于SQLServer2008游标中FETCH语句的说法,正确的是()。A、FETCHNEXT表示先提取游标当前行指针所指向的行数据,然后将游标当前行指针下移一行B、FETCHNEXT表示先将游标当前行指针移动到下一行,并提取所指向的行数据C、用FETCH语句只能将游标当前行指针向下移动D、用FETCH语句不能提取指定行数据标准答案:B知识点解析:NEXT关键字的作用是返回紧跟在当前行之后的数据行,并且当前行递增为结果行。PRIOR关键字返回紧临当前行前面的数据行,并且当前行递减为结果行。ABSOLUTEn和RELATTVEn关键字用于指定特定行。FIRST关键字返回游标中的第一行并将其作为当前行。LAST关键字返回游标中的最后一行并将其作为当前行。故答案为B项。10、设在SQLServer中有如下定义触发器的语句:CREATETRIGGERtri_1ONT1FORINSERTAS……下列关于该触发器作用的说法,正确的是()。A、在T1表上定义了一个由插入操作引发的前触发型触发器B、在T1表上定义了一个用于插入数据的后触发型触发器C、在T1表上定义了一个由插入操作引发的后触发型触发器D、在T1表上定义了一个用于插入数据的前触发型触发器标准答案:C知识点解析:建立DML触发器SQL语句为CREATETRIGGER,其语法格式为:CREATETRIGGER<Trigger_name>ON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}AS{sql_statement}…使用FOR或AFTER选项定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。根据题意定义的触发器语句知在T1表上定义了一个由插入操作引发的后触发型触发器。故答案为C选项。11、设在SQLServer2008中,要定义一个有两个输入参数a和b、一个输出参数c的存储过程,a的类型为字符类型,b、c为整型,a的默认值为’好’。下列定义该存储过程的接口语句正确的是()。A、CREATEPROCP1@achar(10)=’好’,@bint,@cintoutputB、CREATEPROCP1@achar(10)default’好’,@bint,@cintoutputC、CREATEPROCP1@achar(10)=’好’,@bint,output@cintD、CREATEPROCP1@achar(10)default’好’,@bint,output@cint标准答案:A知识点解析:在创建存储过程时可以声明一个或多个参数,除非定义了参数的默认值或将参数设置为等于另一个参数,否则用户在调用存储过程时必须为每个声明的参数提供值。输出参数使用OUTPUT将值返回给过程调用方。本题中a和b是输入参数,a的默认值为好,并没有定义a参数的defautt值,排除B和D选项;在创建存储过程中参数定义的规则是@参数数据类型=默认值,排除C选项。答案为A选项。、12、设有工作表(工作编号,最低工资,最高工资),其中工作编号、最低工资和最高工资均为整型,工作编号为主码。现要求最高工资必须大于等于最低工资,但不能超过最低工资的2倍。在SQLServer2008环境中有下列创建该表的语句:Ⅰ.CREATETABLE工作表(工作编号intprimarykey,最低工资int,最高工资intcheck(最高工资between最低工资and最低工资*2))Ⅱ.CREATETABLE工作表(工作编号int,最低工资int,最高工资int,primarykey(工作编号).check(最高工资between最低工资and最低工资*2))Ⅲ.CREATETABLE工作表(工作编号intprimarykey(工作编号).最低工资int,最高工资int,check(最高工资between最低工资and最低工资*2))Ⅳ.CREATETABLE工作表(工作编号intprimarykey(工作编号).最低工资int,最高工资intcheck(最高工资between最低工资and最低工资*2))上述语句中正确的是()A、仅Ⅰ和ⅡB、仅Ⅱ和ⅢC、仅Ⅲ和ⅣD、全部标准答案:B知识点解析:当用CHECK进行约束条件限制时,若其只涉及对某一列的约束则可以放在该列后面,如果是约束条件中涉及两列或两列以上,则为对整个数据表的约束,放在表的最后面。13、设在SQLServer2008某数据库中建有如下会员卡表:CREATETABLETable_Card(CardIDchar(4)PRIMARYKEY,StartDatedatetimeNOTNULL,ScoreintNOTNULLDEFAULT0,StateintNOTNULLCHECK(Statein(0,1,2)))现表中无数据,某用户对此表依次进行了如下操作:Ⅰ.INSERTINTOTable_CardVALUES(’1001’,’2012-1-112:30:01’,154,0)Ⅱ.INSERTINTOTable_Card(CardID,StartDate,State)VALUES(’1002’,’2012-1-112:30:02’,1)Ⅲ.INSERTINTOTable_CardVALUES(’1003’,’2012-1-112:30:03’,172,2)Ⅳ.INSERTINTOTable_CardVALUES(’1004’,’2012-1-112:30:04’,135,3)Ⅴ.UPDATETable_CardSETState=3WHERECardID=’1001’Ⅵ.UPDATETableCardSETState=1WHERECardID=’1004’以上操作对Table_Card表数据产生影响的是()A、仅Ⅰ、Ⅱ和ⅢB、仅Ⅰ、Ⅴ和ⅥC、仅Ⅰ、Ⅱ、Ⅲ和ⅥD、仅Ⅲ、Ⅳ、Ⅴ和Ⅵ标准答案:A知识点解析:Ⅳ中插入字段的第四个字段“3”不满足“CHECK(Statein(0,1,2))”的条件,因此插入不成功。Ⅴ中更新第四个字段“State=3”同样不满足“CHECK(Statein(0,1,2))”的条件,更新失败。Ⅵ中因为没有“CardID=1004”的记录,所以更新失败。14、下列关于SQLServer2008前触发型触发器的说法,错误的是()A、在一个表的每个数据更改操作上只能定义一个前触发型触发器B、可以使用INSTEADOF选项定义前触发型触发器C、在一个表的每个数据更改操作上可以既定义前触发型触发器又定义后触发型触发器D、可以使用BEFORE选项定义前触发型触发器标准答案:D知识点解析:如果用户要通过数据操作语言(DML)事件编辑数据,则执行DML触发器。DML事件是针对表或视图的INSERT、UPDATE或DELETE语句。建立DML触发器的SQL语句为CREATETRIGGER,其语法格式为:CREATETRIGGER[schema_name.]trigger_nameON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}AS{sql_statement}[;]后触发型触发器主要使用FOR或AFTER选项定义的。可以使用INSTEADOF选项定义前触发型触发器,在一个表的每个数据更改操作上只能定义一个前触发型触发器。故答案为D选项。15、有教师表(教师号,教师名,职称,基本工资),其中基本工资和取值与教师职称有关,实现这个约束的可行方案是()A、在教师表上定义一个视图B、在教师表上定义一个存储过程C、在教师表上定义插入和修改操作的触发器D、在教师表上定义一个标量函数标准答案:C知识点解析:触发器(trigger)是SQLServer提供给程序员和数据分析员用来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它并执行,且经常用于加强数据的完整性约束和业务规则等。教师表中要求基本工资的取值与教师的职称有关,即当对教师的职称进行操作的时候,要求基本工资的取值随着职称变化而变化,因此采用触发器可以达到要求。二、应用题(本题共13题,每题1.0分,共13分。)16、下面程序段的功能是:在数据库中判断是否存在名为my_proc的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能是向author_id、author_name、address和telephone字段插入数据。阅读并回答以下问题:USEbookdbGOIFEXISTS(SELECT________FROMSysobjectsWHEREname=’my_proc’andtype=’P’)DROPPROCmy_procGOCREATEPROCmy_proc@aint,@bchar(8).@cchar(50)________INSERTINTOauthor(author_id,author_name,address)VALUES(@a.@b.@c)GO标准答案:Nameas知识点解析:在数据库中判断是否存在名为my_proc的存储过程,即从系统表中查询有没有和my_proc同名的过程用“SELECTnameFROMSysobjects”表示。其中Sysobjects为系统表,保存当前数据库的对象,如约束、默认值、日志、规则、存储过程等。比较常用的字段为:SysObjects(Namesysname,——object名称idint,——objectidxtypechar(2),——object类型typechar(2),——object类型uidsmallint,——object所有者的ID…——其他的字段不常用到。)创建过程的命令格式为:CREATEPROCmyproc@变量1,@变量2AS{<sql_statement>[;][…n]}[;]<sql_statement>::={[BEGIN]statements[END]}17、SQLServer2008中有学生表(学号,姓名,年龄,所在系),现要查询每个系年龄最小的两个学生的姓名和年龄。请补全下列语句。SELECT所在系,姓名,年龄FROM学生表aWHERE年龄IN(SELECTTOP2年龄FROM学生表bWHERE________ORDERBY年龄ASC)ORDERBY所在系,年龄ASC标准答案:a.所在系=b.所在系或b.所在系=a.所在系知识点解析:SELECT语句的一般格式为:SELECT[ALL|DISTINCT|TOPn]*|<字段列表>[,<表达式>AS<标识符>]FROM<表名1>[,<表名2>]…[WHERE<条件表达式>][GROUPBY<字段名>[HAVING<条件表达式>]][ORDERBY<字段名>[ASC|DESC]]本题中学生表分为学生表a和学生表b,需要将学生表a和学生表b连接起来,选择两个表中的共同字段所在系作为子查询的查询条件,故答案为a.所在系=b.所在系或b.所在系=a.所在系。18、在SQLServer2008中,对于更新操作的触发器,系统将产生2张逻辑工作表,其中存放更新前数据的逻辑工作表是________。标准答案:DELETED表知识点解析:在SQLServer2008中,对于更新操作的触发器,系统将产生两张逻辑工作表,即DELETED表和INSERTED表。DELETED表用于存储更新前数据,INSERTED用于更新后的数据。19、设有商品表(商品号,商品名,类别),现要建立查询指定类别的商品数量的存储过程。请补全下列语句CREATEPROCP_COUNT(@xASvarchar(20))ASSELECTcount(*)from商品表WHERE类别=________.标准答案:@x知识点解析:本题中要查询指定类别,该类别值来源于用户定义的变量的值,因此本题应该填入@x。20、设在SQLServer某数据库中有表选课(学号,课程号,成绩),现要定义限制每个学生的选课总门数不能超过10门的前触发型触发器。请补全下列语句:CREATETRIGGERtri_cntON选课________INSERTAS……标准答案:INSTEADOF知识点解析:建立DM触发器SQL语句为CREATETRIGGER,其语法格式为:CREATETRIGGER<Trigger_name>ON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}AS{sql_statement}…使用INSTEADOF选项定义的触发器为前触发型触发器,根据题意要求限制每个学生的选课总门数不能超过10门的前触发型触发器,所以使用INSTEADOF选项定义。故答案为INSTEADOF。21、设有表Student(Sno,Sname,Sdept),现要统计人数超过1000人的系。请补全下列语句:SELECTSdept,COUNT(*)FROMStudentGROUPBYSdept________COUNT(*)>1000标准答案:havinga或HAVING知识点解析:SELECT语句的一般格式为:SELECT[ALL|DISTINCT|TOPn]*|<字段列表>[,<表达式>AS<标识符>]FROM<表名1>[,<表名2>]…[WHERE<条件表达式>][GROUPBY<字段名>[HAVING<条件表达式>]][ORDERBY<字段名>[ASC|DESC]]本题中需要对超过1000人的系进行条件筛选,与GROUPBY一起使用来限定分组必须满足的条件,只能是having关键字。故答案为having。22、SQLServer2008中声明游标的语句为:DECLARExcursor________SELECT…标准答案:FOR知识点解析:SQLServer2008游标声明的语句格式为:DECLAREvendor_cursorCURSORFORSELECT…23、设有如下定义游标的T-SQL语句:DECLAREcur1CURSORFORSELECT*FROM…请补全下列从游标提取下一行数据的语句________FROMcur1INTO…标准答案:FETCHNEXT知识点解析:FETCH的功能是通过Transact-SQL服务器游标检索特定行,具体语法:FETCH[[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@nvar}|RELATIVE{n|@nvar}]FROM]{{[GLOBAL]cursor_name}@cursor_variable_name}[INTO@variable_name[,…n]]参数说明:NEXT:紧跟当前行返回结果行,并且当前行递增为返回行。如果FETCHNEXT为对游标的第一次提取操作,则返回结果集中的第一行。NEXT为默认的游标提取选项。PRIOR:搜索返回紧邻当前行前面的结果行,并且当前行递减为返回行。如果FETCHPRIOR:为对游标的第一次提取操作,则没有行返回并且游标置于第一行之前。FIRST:返回游标中的第一行并将其作为当前行LAST:返回游标中的最后一行并将其作为当前行搜索。ABSOLUTE{n|@nvar}:如果n或@nvar为正,则返回从游标头开始向后的第n行,并将返回行变成新的当前行。如果n或@nvar为负,则返回从游标末尾开始向前的第n行,并将返回行变成新的当前行。如果n或@nvar为0,则不返回行。n必须是整数常量,并且@nvar的数据类型必须为smallint、tinyint或intoRELATIVE{n|@nvar}:如果n或@nvar为正,则返回从当前行开始向后的第n行,并将返回行变成新的当前行。如果n或@nvar为负,则返回从当前行开始向前的第n行,并将返回行变成新的当前行。如果n或@nvar为0,则返回当前行。在对游标进行第一次提取时,如果在将n或@nvar设置为负数或0的情况下指定FETCHRELATIVE,则不返回行。n必须是整数常量,@nvar的数据类型必须为smallint、tinyint或int。24、在SQLServer2008中,若要提取游标cur1当前行指针所指的前一行数据,使用的选项是:FETCH________FROMcur1标准答案:PRIOR知识点解析:游标指针各个参数含义:NEXT:返回紧跟在当前行之后的数据行,并且当前行递增为结果行。PRIOR:返回紧跟当前行前面的数据行,并且当前行递减为结果行。FIRST:返回游标中的第一行并将其作为当前行。LAST:返回游标中的最后一行并将其作为当前行。25、设在SQLServer某数据库中有表选课(学号,课程号,成绩)。现要声明一个查询成绩大于等于90的学生学号、课程号和成绩的游标。请补全下列语句:DECLAREc1________FORSELECT学号,课程号,成绩FROM选课WIERE成绩>=90标准答案:CURSOR知识点解析:使用游标之前,要声明游标,ISO声明游标的简化语法格式如下:DECLAREcursor_name[INSENSITIVE][SCROLL]CURSORFORselectstatement[FOR{READONLY|UPDATE[OFcolumn_name[,…n]]}]SQLServer中声明使用DECLARECURSOR语句,声明游标包括定义游标的滚动行为和用户生成游标所操作的结果集的查询。故答案为CURSOR。26、设有如下通过游标查询并输出计算机系学生姓名的程序代码段,请补全下列语句。DECLARE@Snamevarchar(20)DECLAREtest_curCURSORFORSELECTSnameFROMStudentWHERESdept=’计算机系’OPENtest_curFETCHNEXTFROMtest_cur________WHILE@@FETCH_STATUS=0BEGINPRINT@Sname……ENDCLOSEtest_cur标准答案:INTO@Sname知识点解析:使用FETCH语句从游标结果集中按行提取数据,其语法格式如下:FETCH[[NEXT|PRIOR|FIRST|LAST|ABSOLUTEn|RELATIVEn]FROM]cursorname[INTO@variable_name[,…n]]其中INTO@variablename[,…n]参数表示将提取的列数据保存到局部变量中。列表中的各个变量从左到右与游标结果集中的相应列对应。本题中通过游标查询并输出计算机系学生姓名,所以填写INTO@Sname。故答案为INTO@Sname。27、在SQLServer2008中,用户自定义函数主要包括________函数和表值函数两类。标准答案:标量知识点解析:SQLServer2008支持两类用户自定义函数:标量函数和表值函数。28、在SQLServer2008中,用户自定义函数主要包括标量函数和________函数两类。标准答案:表值知识点解析:在SQLServer2008中,用户自定义函数主要包括标量函数和表值函数两类。计算机三级数据库技术(数据库后台编程技术)机试模拟试卷第3套一、选择题(本题共14题,每题1.0分,共14分。)1、查询处理器和存储管理器是数据库管理系统中的核心模块。下列关于查询处理器和存储管理器的说法,错误的是()A、查询处理器中的DML编译器会对用户提交的DML语句进行优化,并将其转换成能够执行的底层数据库操作指令B、存储管理器中的查询执行引擎会根据编译器产生的指令完成具体数据库数据访问功能C、存储管理器中的缓冲区管理器负责将从磁盘读出的数据块放入内存缓冲区,同时也负责对缓冲区中的数据块进行维护D、查询处理器中的DDL编译器编译或解释用户提交的DDL语句,并将生成的元数据存储在数据库的数据字典中标准答案:B知识点解析:查询处理器中最主要的模块是查询编译器和查询执行器,负责DML语句解析和执行,因此B项中所阐述的不是存储管理器的功能,应该是查询处理器的功能。2、设某数据库在非工作时间(每天8:00以前、18:00以后、周六和周日)不允许授权用户在职工表中插入数据。下列方法中能够实现此需求且最为合理的是()A、建立存储过程B、建立后触发型触发器C、定义内嵌表值函数D、建立前触发型触发器标准答案:D知识点解析:触发器是用户定义在关系表上的一类由时间驱动的特殊过程。一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制,类似于约束。前触发型触发器只执行触发器指定的内容而不执行引发触发器的SQL语句,为职工表中插入数据设定一个非工作时间的前触发型触发器后就可实现该功能。所以选D。3、下列关于SQLServer2008触发器的说法,错误的是()。A、触发器可以实现复杂的完整性约束B、在一个表上可以为同一个操作建立多个前触发型触发器C、对DML型触发器,引发触发器执行的操作只能是INSERT、DELETE和UPDATED、使用触发器实现数据完整性的效率通常低于CHECK约束标准答案:B知识点解析:一张表上可以建立多个后触发器,但只能建立一个前触发器。4、设在SQLServer2008中有如下定义触发器的语句:CREATETRIGGERtriONT1FORINSERTAS……下列关于该语句的说法,正确的是()。A、该语句声明的是一个后触发型触发器,每当在T1表上执行完插入操作之后,执行tri触发器B、该语句声明的是一个后触发型触发器,每当执行完tri触发器后,再执行插入语句C、该语句声明的是一个前触发型触发器,每当在T1表上执行插入操作之前,先执行tri触发器D、该语句声明的是一个前触发型触发器,每当执行tri触发器前,先执行插入语句标准答案:A知识点解析:使用FOR或者AFTER选项定义的触发器为后触发的触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。使用INSTEADOF选项定义的触发器为前触发器。在这种模式的触发器中,指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代引发的操作。故答案为A项。5、下列关于存储过程的说法,正确的是()。A、一个存储过程只能有一个输出参数B、存储过程不支持输入参数有默认值C、存储过程的返回结果可以是一个集合D、删除存储过程的语句是:DELETEPROCEDURE存储过程名标准答案:C知识点解析:在创建存储过程时可以声明一个或多个参数。除非定义了参数的默认值或者将参数设置作为等于另外一个参数。一个存储过程最多可以有2100个参数。存储过程的返回结果可以是一个集合;删除存储过程的语句是:DROPPROCEDURE存储过程名。故答案为C选项。6、下列关于存储过程的说法,正确的是()。A、存储过程是存储在客户端应用程序中的可以被调用执行的代码B、使用存储过程会降低数据操作效率C、存储过程是存储在数据库服务器端的可以被调用执行的代码D、使用存储过程只能实现数据查询操作标准答案:C知识点解析:存储过程是存储在数据库中供所有用户程序调用的子程序,第一次被执行或调用时装载到内存,供其他程序调用,可极大地提高后续程序执行存储过程的效率。使用存储过程可以提高数据操作效率,B选项错误。存储过程可以实现数据查询、数据更新、数据删除等操作。故答案为C选项。7、下列在T表的DELETE操作上建立后触发型触发器的语句开始部分,正确的是()。A、CREATETRIGGERtri_T_DelFORdeleteONTAS…B、CREATETRIGGERtri_T_De1ONTFORdeleteAS…C、CREATETRIGGERtri_T_De1ONTBEHINDdeleteAS…D、CREATETRIGGERtri_T_DelBEHINDdeleteONTAS…标准答案:B知识点解析:如果用户要通过数据操作语言(DML)事件编辑数据,则执行DML触发器。DML事件是针对表或视图的INSERT、UPDATE或DELETE语句。建立DML触发器的SQL语句为CREATETRIGGER,其语法格式为:CREATETRIGGER[schema_name.]trigger_nameON{table|view}{FOR|AFTERINSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}AS{sql_statement}[;]后触发型触发器主要使用FOR或AFTER选项定义的。故答案为B选项。8、在SQLServer2008中,设有如下定义的内联表值函数:CREATEFUNCTIONdbo.f_StuInfo(@deptvarchar(20))RETURNSTABLEASRETURN(SELECTS.DeptAS系名,COUNT(*)AS人数,AVG(SC.Grade)AS平均成绩FROMStudentSJOINSCONS.Sno=SC.SnoWHERES.Dept=@deptGROUPBYS.Dept)有下列利用该函数的查询语句:Ⅰ.SELECT*FROMdbo.f_StuInfo(’CS’)Ⅱ.SELECTDept,COUNT(*),AVG(SC.Grade)FROMdbo.f_Stulnfo(’CS’)Ⅲ.SELECT人数,平均成绩FROMdbo.f_StuInfo(’CS’)Ⅳ.SELECT*FROMdbo.f_StuInfo(’CS’)WHERE人数>=50上述语句中能正确执行的是()。A、仅Ⅰ和ⅡB、仅Ⅰ和ⅢC、仅Ⅰ和ⅣD、仅Ⅰ、Ⅲ和Ⅳ标准答案:D知识点解析:Ⅱ中由于使用内联表值函数的返回值是一个表,因此查找时需加上系名、人数和平均成绩三个字段,因此Ⅱ错误,Ⅰ、Ⅲ和Ⅳ均正确。故答案为D项。9、设在SQLServer2008中有如下定义存储过程的语句:CREATEPROCp1@xint,@yint=10,@zintoutput……下列关于调用该存储过程的语句,错误的是()。A、DECLARE@iintoutputEXECp110,@iB、DECLARE@iintEXECp110,100,@ioutputC、DECLARE@iintEXECp110,100,default,@ioutputD、DECLARE@iintEXECp1@x=10,@z=@ioutput标准答案:A知识点解析:在调用存储过程时,只需要声明参数的类型,不能指明参数为输出参数。只有再执行时才能指明参数为输出参数。故答案为A选项。10、设在SQLServer中有如下定义触发器的语句:CREATETRIGGERtri_1ONT1FORUPDATEAS……下列关于该触发器作用的说法,正确的是()。A、在T1表上定义了一个由数据更改操作引发的前触发型触发器B、在T1表上定义了一个由数据更改操作引发的后触发型触发器C、在T1表上定义了一个由数据增、删、改操作引发的后触发型触发器D、在T1表上定义了一个由数据增、删、改操作引发的前触发型触发器标准答案:B知识点解析:建立DML触发器SQL语句为CREATETRIGGER,其语法格式为:CREATETRIGGER<Trigger_name>ON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}AS{sql_statement}…使用FOR或AFTER选项定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。根据题意定义的触发器语句知在T1表上定义了一个由数据更改操作引发的后触发型触发器。故答案为B选项。11、设在SQLServer2008中,要定义一个有一个输入参数a和两个输出参数b、c的存储过程,a、b、c均为整型。下列定义该存储过程的接口正确的是()。A、CREATEPROCP1@aint,@bintoutput,@cintoutputB、CREATEPROCP1@aintinput,@bintoutput,@cintoutputC、CREATEPROCP1input@aint,output@bint,output@cintD、CREATEPROCP1@aint,output@bint,output@cint标准答案:A知识点解析:在创建存储过程时可以声明一个或多个参数,除非定义了参数的默认值或将参数设置为等于另一个参数,否则用户在调用存储过程时必须为每个声明的参数提供值。输出参数使用OUTPUT将值返回给过程调用方。本题中a是输入参数,b和c是输出参数,排除B和D选项;在创建存储过程中参数定义的规则是@参数数据类型=默认值,排除C选项。故答案为A选项。12、在SQLServer2000中,有商品表(商品号,商品名,单价)和销售表(商品号,销售时间,销售价格)。现要限制“销售价格”的取值必须在此商品“单价”的0.6倍到1.5倍范围之内,实现这个约束的正确代码是()A、CHECK(销售价格BETWEEN单价*0.6AND单价*1.5)B、CHECK(销售价格BETWEEN商品表单价*0.6AND商品表.单价*1.5)C、CREATETRIGGERtri_SalesON销售表FORINSERT,UPDATEASIFEXISTS(SELECT*FROMINSERTEDaJOIN商品表bONa.商品号=b.商品号WHERE销售价格NOTBETWEEN单价*0.6AND单价*1.5)ROLLBACKD、CREATETRIGGERtri_SalesON销售表INSTEADOFINSERT,UPDATEASIFEXISTS(SELECT*FROMINSERTEDaJOIN商品表bONa.商品号=b.商品号WHERE销售价格NOTBETWEEN单价*0.6AND单价*1.5)ROLLBACK标准答案:C知识点解析:FOR指定触发器只有在引发的SQL语句中指定的操作都已成功执行,并且所有的约束检查也成功完成后才执行触发器,这种触发器称为后触发型触发器。INSTEADOF指定执行触发器而不是执行引发触发器执行SQL语句,从而替代触发语句的操作,称这种触发器为前触发型触发器。13、触发器是一种特殊的存储过程,它是由用户对数据的更改操作自动引发执行的。下列数据库控制中,适于用触发器实现的是()A、并发控制B、恢复控制C、可靠性控制D、完整性控制标准答案:D知识点解析:触发器是一种特殊的存储过程,其特殊性在于它不需要用户来调用,而是当用户对表中的数据进行UPDATE、INSERT和DELETE操作时自动触发执行。触发器通常用于保证业务规则和数据完整性,其主要优点是用户可以用编程的方法来实现复杂的处理逻辑和业务规则,增强了数据完整性约束的功能。14、设某数据库中有学生表(学号,姓名,所在系)和选课表(学号,课程号,成绩)。现要查询没选课的学生姓名和所在系。下列语句中能够实现该查询要求的是()A、SELECT姓名,所在系FROM学生表aLEFTJOIN选课表bONa.学号=b.学号WHEREa.学号ISNULLB、SELECT姓名,所在系FROM学生表aLEFTJOIN选课表bONa.学号=b.学号WHEREb.学号ISNULLC、SELECT姓名,所在系FROM学生表aRIGHTJOIN选课表bONa.学号=b.学号WHEREa.学号ISNULLD、SELECT姓名,所在系FROM学生表aRIGHTJOIN选课表bONa.学号=b.学号WHEREb.学号ISNULL标准答案:B知识点解析:从数据库中查出没有选课的学生姓名和所在系,则在学生表中查出选课表中没有的学生即可。在这里采用LEFTJOIN来连接查询。并且要求选课表中的学生学号为NULL。二、应用题(本题共14题,每题1.0分,共14分。)15、有表SCORE(Sno,Cno,Degree),查询该表中最高分的学生学号和课程号:SELECT________FROMSCOREWHEREDegree=________;标准答案:Snoas学号,Cnoas课程号(SELECTMAX(S1.Degree)FROMSCORES1)知识点解析:通过AS来对属性起别名,使得在新建的表中该属性名被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院医德医风考评制度
- PMP脱气膜组加速进入精密流体与高效脱气应用新阶段
- 护理专业就业方向
- 四年级上册童年趣事作文教学设计
- 2026年医院院感及传染病防控考核试题附答案
- 2026年事业单位招聘考试公共基础知识单选题库及答案
- 交通安全教育铭刻生命至上的承诺四年级主题班会课件
- 影视制作项目经理影视作品质量及制作周期绩效考评表
- 2026年中级钳工理论模拟习题与参考答案
- 2026年卫生法律法试题及答案
- 肺癌伴心衰的护理
- 美缝合同协议书
- 回扣承诺协议书范本
- 动脉血气标本采集并发症预防及处理课件
- 车间夜间值班管理制度
- 2025年电工(中级)职业技能鉴定参考试指导题库(含答案)
- JC∕T 2558-2020 透水混凝土标准规范
- DL∕T 5161.9-2018 电气装置安装工程质量检验及评定规程 第9部分:蓄电池施工质量检验
- 研究生入学考试中医基础理论考点精要
- 《心脏骤停》课件
- 钢结构除锈刷漆施工方案
评论
0/150
提交评论