SQL笔试选择题.docx
《SQL笔试选择题.docx》由会员分享,可在线阅读,更多相关《SQL笔试选择题.docx(18页珍藏版)》请在冰豆网上搜索。
SQL笔试选择题
SQL笔试选择题
针对以下题目请选择正确答案(每道题目有一个或多个正确的答案)。
针对每一道题目,所有答案都选对,则该题得分,否则不得分。
1.数据库设计的最终目标不包括()。
(选择两项)BD
A.高效
B.满足范式要求
C.安全
D.表现设计者的技术实力
E.易用
F.便于将来扩展功能和容量
2.有关数据冗余说法错误的是()。
(选择一项)C
A.数据库中,数据存在副本的现象,就是数据冗余。
B.通过分类存储,可以有效减少数据冗余,但是会增加数据查找的复杂性。
C.在数据库设计阶段,一定要尽最大可能避免数据冗余,最好做到无数据冗余。
D.数据冗余通常是由于数据库设计引起的。
3.用于表示数据库实体之间的关系图是()。
A
A.实体关系图
B.数据模型图
C.实体分类图
D.以上都不是
4.假定有一个用户表,表中包含字段:
userid(int)、username(varchar)、password(varchar)等,该表需要设置主键,以下说法正确的是()。
(选择两项)AB
A.如果不能有同时重复的username和password,那么username和password可以组合在一起作为主键。
B.此表设计主键时,根据选择主键的最小性原则,最好采用userid作为主键。
C.此表设计主键时,根据选择主键的最小性原则,最好采用username和password作为组合键。
D.如果采用userid作为主键,那么在userid列输入的数值,允许为空。
5.语句altertableuserinfoaddconstraintuq_useridunique(userid)执行成功后,为userinfo表的()字段添加了()约束。
B
A.userid主键
B.userid唯一
C.uq_userid外键
D.uq_userid检查
6.运行如下T-SQL,结果返回包含()的记录集。
A
createtablescores
(
scoreidintidentity(1,2),
scorenumeric(4,2)notnull,
courseidint
)
insertintscoresvalues(90.5,null);
insertintoscoresvalues(78.234,2);
select*fromscores;
A.190.50NULL
378.232
B.178.232
C.190.50
D.190.50
278.232
7.关于子查询,以下说法正确的是()。
(选择两项)AC
A.一般来说,表连接都可以用子查询替换。
B.一般来说,子查询都可以用表连接替换。
C.相对于表连接,子查询适合于作为查询的筛选条件。
D.相对于表连接,子查询适合于查看多表的数据。
8.创建存储过程如下:
createprocedurescoreproc
@scoreidint,@scorenumeric(4,2)output
as
select@score=scorefromscoreswherescoreid=@scoreid
正确的调用是:
C
A.execscoreproc1,@myscoreoutput
print@myscore
B.execscoreproc@id=1,@myscoreoutput
print@myscore
C.declare@myscorenumeric(4,2)
execscoreproc1,@myscoreoutput
print@myscore
D.declare@myscorenumeric(4,2)
execscoreproc@id=1,@myscoreoutput
print@myscore
9.假设需要设计一张表,记录各个作者著作的所有图书信息,表的结构如下:
作者(作者名称,图书1,版本1,书价1,图书二,版本2,书价2,…),该表最多符合第()范式。
A
A.一
B.二
C.三
D.不符合任何范式
10.一个学生只能就读于一个班级,而一个班级可以同时容纳多个学生,学生与班级之间是()的关系。
C
A.一对一
B.一对多
C.多对一
D.多对多
11.E-R图中,关系集用下面()来表示。
B
A.矩形
B.椭圆形
C.菱形
D.圆形
12.有如下表结构,#号打头字段代表主键或组合主键,一份订单可以订购多种产品。
产品:
#产品编号,产品名称,产品价格;
订单:
#订单编号,#产品编号,订购日期,订购数量;(订单编号与产品编号是组合主键)
该表最高符合第()范式。
B
A.一
B.二
C.三
D.未规范化的
13.有如下表结构,#号打头字段代表主键或组合主键,一份订单可以订购多种产品。
产品:
#产品编号,产品名称,产品价格;
订单:
#订单编号,总价,订购日期;
订单子项:
#子项编号,订单编号,产品编号,订购数量;
该表最高符合第()范式。
C
A.一
B.二
C.三
D.未规范化的
14.创建sql语句如下:
createtableuserInfo
(
userIdintidentity(-1,1),第1行
userNamenvarchar(20)notnull,第2行
cardNOcharnotnull,第3行
agesmallint
(2),第4行
addressntext(300)第5行
)
执行时,会在第()行出现错误。
(选择两项)DE
A.1
B.2
C.3
D.4
E.5
15.以下关于规范设计的描述正确的是()。
(选择两项)AD
A.规范设计的主要目的是消除数据冗余。
B.规范设计往往会增加数据库的性能。
C.设计数据库时,规范化程度越高越好。
D.在规范化数据库时,易于维护数据库的完整性。
16.关于存储过程,以下说法正确的是()。
(选择一项)A
A.不能在存储过程中使用CREATEVIEW命令。
B.T-SQL批代码的执行速度要快于存储过程。
C.存储过程必须带有参数。
D.存储过程不能返回结果集。
17.已知有scores表,scoreid为主键,现在表中共有10条记录,其中一条scoreid=21。
创建视图:
createviewview_scores
as
select*fromscores
执行如下命令:
deletefromview_scoreswhere(scoreid=21)
再执行如下命令:
select*fromscores
select*fromview_scores
假定上述命令全部执行成功,将各自返回()()行记录。
D
A.10,10
B.10,9
C.9,10
D.9,9
18.设计用户表时,身份证号为固定18位长,对该字段最好采用()数据类型。
(选择一项)B
A.int
B.char
C.varchar
D.text
19.授予用户someone对scores表的一些权限,正确的授权语句是()。
(选择一项)C
A.grantinsert,updatetotalbescoresonsomeone
B.grantinsertandupdatetotablescoresonsomeone
C.grantinsert,updateonscorestosomeone
D.grantinsertandupdateonscorestosomeone
20.建立如下数据库表:
createtalbeDepartment(
departIDintnotnullprimarykey,
deptNamevarchar(20)notnull
)
createtableEmployee(
employeeIDintnotnull,
deptIDintnotnull,
namevarchar(20)notnull
)
要想保证Employee表中每一个雇员(employee)是唯一的,且只能属于在Department表中已经存在的部门,最有的做法是()。
(选择一项)B
A.把employeeID和deptID设为组合主键。
B.把employeeID设为主键,同时在deptID列上创建一个外键约束。
C.把employeeID设为主键,同时在deptID列上创建一个检查约束。
D.在deptID列上创建一个唯一约束,同时在deptID列上创建一个外键约束。
21.建立一张员工表,当向表中插入数据时,若不提供入职时间,就把系统当前时间作为员工入职时间插入数据库,以下说法正确的是()。
(选择一项)D
A.约束不能使用各种函数,所以无法实现要求的功能。
B.可以使用CHECK约束实现,默认值采用日期函数getDate()。
C.入职时间必须设为日期类型。
D.可以使用DEFAULT约束实现,默认值采用日期函数getDate()。
22.为了加快对某表查询的速度,应对此表建立()。
(选择一项)D
A.约束
B.存储过程
C.规则
D.索引
23.假设有表student(学生)的设计如下:
id()标识列
name()学生姓名
address()学生地址
department()所属院系
departmentHead()学院主管
该表最高满足()范式。
(选择一项)B
A.一
B.二
C.三
D.不满足任何范式
24.为数据库中一个或者多个表中的数据提供另外一种查看方式的逻辑表被称为()。
(选择一项)C
A.存储过程
B.数据库关系图
C.视图
D.表
25.要建立一个教师表,包含姓名、职称、级别等字段。
若插入数据时,级别字段如果不输入,缺省值为“讲师”,最合适的实现方式是()。
A
A.为“级别”字段建立default约束。
B.为“级别”字段建立check约束。
C.为教师表数据输入编写一个存储过程进行控制。
26.现有订单表orders,包含数据如下表。
若查询既订购了产品p01,又订购了产品p02的顾客编号,可以执行以下()sql语句。
(选择两项)CD
A.selectdistinct(cid)fromordersolwhereol.pidin('p01','p02')
B.selectdistinct(cid)fromordersolwhereol.pid='p01'andol.pid='p02'
C.selectdistinct(o1.cid)fromorderso1,orderso2whereo1.pid='p01'ando2.pid='p02'ando2.cid=o1.cid
D.selectdistinct(cid)fromorderswherepid='p01'andcidin(selectcidfromorderswherepid='p02')
27.关于聚集索引,以下()说法是错误的。
(选择两项)CD
A.一个表最多只能创建一个聚集索引。
B.聚集索引比非聚集索引有更快的访问速度。
C.主键一定是聚集索引。
D.创建了聚集索引的列不允许有重复值。
28.关于视图,以下()说法是错误的。
(选择一项)C
A.使用视图,可以简化数据的使用。
B.使用视图,可以保护敏感数据。
C.视图是一种虚拟表,视图中的数据只能来源于物理数据表,不能来源于其他视图。
D.视图中指存储了查询语句,并不包含任何数据。
29.常用的存储过程不包括()。
(选择一项)D
A.sp_tables
B.sp_columns
C.sp_stored_procedures
D.sp_renametable
30.对事务的描述错误的是()。
(选择2项)BD
A.一个事务中的所有命令作为一个整体提交或者回滚。
B.如果两个并发事务要同时修改一个表,可能产生死锁。
C.SQLServer默认将每条单独的T-SQL语句视为一个事务。
D.事务必须使用begintransaction来明确制定事务的开始。
31.分数表scores设计如下:
courseID(课程编号)
studentID(学生编号)
score(分数)
另有一个学生信息表student,包含studentID,sname(学生姓名)。
已知并非所有学生都参加了courseID为0001的考试,现在查询所有参加0001号课程考试及格学生的学生姓名,下面正确的是()。
(选择一项)A
A.selectsnamefromstudentwherestudentIDin(selectstudentIDfromscoreswherecourseID=0001andscore>=60)
B.selectsnamefromstudentwherestudentID=(selectstudentIDfromscoreswherecourseID=0001andscore>=60)
C.selectsnamefromstudentwherestudentIDnotin(selectstudentIDfromscoreswherecourseID=0001andscore<=60)
D.selectsnamefromstudentwherestudentIDexists(selectstudentIDfromscoreswherecourseID=0001andscore>=60)
32.在()的列上更适合创建索引。
(选择两项)AD
A.需要对数据进行排序
B.具有默认值
C.频繁更改
D.频繁搜索
33.SQLServer数据库有2种登录认证方式。
其中在()方式下,需要客户端应用程序连接时提供登录时需要用户标识和密码。
C
A.Windows身份认证。
B.以超级用户身份登录。
C.SQLServer身份认证。
D.以系统身份登录时。
34.SQLServer数据库中,下列不属于T-SQL事务管理语句的是()。
(选择一项)B
A.BEGINTRANSACTION;
B.ENDTRANSACTION;
C.COMMITTRANSACTION;
D.ROLLBACKTRANSACTION;
35.要建立一个约束,保证用户表(user)中年龄(age)必须在16岁以上,下面语句正确的是()。
(选择一项)A
A.altertableuseraddconstraintck_ageCHECK(age>16)
B.altertableuseraddconstraintdf_ageDEFAULT(16)forage
C.altertableuseraddconstraintuq_ageUNIQUE(age>16)
D.altertableuseraddconstraintdf_ageDEFAULT(16)
36.SQLServer数据库中,包含两个表:
Order订单表,Item订单子项目表。
当一个新订单被加入时,数据要分别保存到Order和Item表,要保证数据完整性,可以使用以下()语句。
(选择一项)C
A.BEGINTRASACTION
INSERTINTOOrderVALUES(此处省略)
INSERTINTOItemsVALUES(此处省略)
ENDTRASACTION
B.BEGINTRASACTION
INSERTINTOOrderVALUES(此处省略)
INSERTINTOItemsVALUES(此处省略)
IF(@@Erro=0)
COMMITTRASACTION
ELSE
ROLLBACKTRASACTION
C.BEGINTRASACTION
INSERTINTOOrderVALUES(此处省略)
IF(@@Erro=0)
INSERTINTOItemsVALUES(此处省略)
IF(@@Erro=0)
COMMITTRASACTION
ELSE
ROLLBACKTRASACTION
ELSE
ROLLBACKTRASACTION
D.BEGINTRASACTION
INSERTINTOOrderVALUES(此处省略)
INSERTINTOItemsVALUES(此处省略)
IF(@@Erro<>0)
ROLLBACKTRASACTION
37.现有一个学生信息表student,包含主键studentID(学生编号)。
又有分数表scores,包含studentID(学生编号)、以及score(考试分数)。
已知student表中共有50个学生,有45人参加了考试(分数存在scores表中),其中10人不及格。
执行以下SQL语句:
select*fromstudentwhereexists(selectstudentIdformscorewherescore<60)
可返回()条记录。
(选择一项)A
A.50
B.45
C.10
D.0
38.createtablestudent
(
idintidentity(1,1),
namevarchar(20)
)
altertablestudentaddconstraintuq_nameunique(name)
insertintostudentvalues(null)
insertintostudentvalues(null)
insertintostudentvalues('jack')
insertintostudentvalues('jack')
依次执行以上SQL语句后,student表中存在()行记录。
B
A.1
B.2
C.3
D.4
39.已知employee表中具有默认约束df_email,删除该约束的语句为()。
(选择一项)A
A.altertalbeemployeedropconstraintdf_email
B.altertalbeemployeeremoveconstraintdf_email
C.altertalbeemployeedeleteconstraintdf_email
D.removeconstraintdf_emailfromtalbeemployee
40.在employee表的firstname字段上建立的非聚集索引的物理效果是()。
(选择一项)D
A.所有的行按照firstname字段值升序排列并物理地存储在数据页中
B.索引中的项按照索引键值的顺序存储,但表中信息的顺序保持不变。
C.所有的行按照firstname字段值降序排列并物理地存储在数据页中
D.所有的行被物理地存储在数据页上,并且根据firstname字段按照索引建立时指定的顺序排列
41.创建存储过程的片断如下:
创建成功后,以下()调用方式是正确的。
(选择一项)B
createprocedureproc_score
@passedint=60,
@countintoutput
as
selectcount(*)fromscoreswherescore<@passed
A.executeproc_score@countintoutput
B.declare@countint
executeproc_score70,@countoutput
C.declare@countintoutput
executeproc_score70,@count
D.executeproc_score70,@countoutput
42.现有学生表Students和用户表Users,两表中的数据如下:
执行sql语句:
select*fromUsersunionselect*fromStudents。
下列说法正确的是()。
(选择一项)A
UsersStudents
userID(int)name(varchar)studentID(int)age(int)
1Wen180
2Shu275
3Gao
4Shui
A.出现错误:
name与age不是同一数据类型。
B.正确执行,返回6行4列。
C.正确执行,返回6行2列。
D.正确执行,返回4行2列。
43.假设有scores表的设计如下:
ID(编号,主键)
StudentID(学生编号)
CourseID(课程编号)
Score(分数)
现在要查询参加过至少两门课程考试的学生各门课程的平均成绩。
以下SQL语句正确的是()。
(选择一项)A
A.selectStudentID,avg(score)fromscoresgroupbyStudentIDhavingcount(studentID)>1
B.selectStudentID,avg(score)fromscoresgroupbyStudentIDwherecount(studentID)>1
C.selectStudentID,avg(score)fromscoresgroupbyStudentIDwherecount(studentID)>1groupbyStudentID
D.selectStudentID,avg(score)fromscoreshavingcount(studentID)>1
44.假设orders表中存在orderid等于1的纪录,执行下面T-SQL:
begintransaction
deletefromorderswhereorderid=1
if(@@error<>0)
rollbacktransaction
rollbacktransaction
以下说法正确的是()。
(选择一项)B
A.执行成功,orderid为1的记录被永久删除。
B.执行成功,orders表没有任何变化。
C.执行时出现错误。
D.执行成功,但事务处理并没有结束。
45.项目开发需要经过几个阶段,绘制数据库的E-R图应该在()阶段进行。
(选择一项)B
A.需求分析
B.概要设计
C.详细设计
D.代码编写
46.将E-R图转换为