SQL测试错题分析
4.在SQL Server中,关于E-R图的说法错误的是()。(双选)
A:菱形表示实体集
B:矩形表示关系集
C:直线用来连接实体集和属性,也可以用来连接关系集和实体集
D:椭圆形表示属性
此题目考查的是数据库模型图。绘制数据库模型图的图形有,矩形、椭圆形、菱形、直线。矩形表示实体集,椭圆形表示属性,菱形表示关系集,直线用来连接属性和实体集,也用来连接实体集和联系集。故错误的的AB选项。
12.在SQL Server中,以下哪一条属于关系数据库的规范化理论要解决的问题()。
A:如何构造合适的数据库逻辑结构
B:如何构造合适的数据库物理结构
C:如何构造合适的应用程序界面
D:如何控制控制不同用户的数据操作权限
因为理论是对事物知识的理解和论述,是有理可据的 所以选A.
13. 下面选择中关于SQL Server中创建和删除表的描述正确的是()。(选择二项)
A:创建表的语法是:CREATE TABLE 表名 { 字段 1 数据类型 列的特征,......}
B:电话号码字段应该定义为字符型,而不是整型
C:列的属性‘ IDENTITY(1,8)’表示指定列自动编号,递增量是,起始值是8
D:删除表的语法是:DROP TABLE 表名
选项A的create table语句中,表名后面的大括号“{”、“}”是错误的,应该是圆括号“(”、“)”。
选项C对标识列的描述也是错误的,identity(1,8)表示指定列自动编号,起始值是1,递增量是8.
17. 在SQL Server 中,对局部变量的赋值可能会引起错误的是()。
A:set @name=‘张三’
B:select @name=name from student
C:select @name ='张三'
D:set @name=(select name from student)
a,b,c,d选项在语法结构上并没有错误,但是在表达式返回多个值时,select语句将返回的最后一个值给变量,set语句会出错
19
正确答案是选项A。本题要查询选修了所有课程的学生信息,即查询有些学生没有一门课程他没有选的。如果有一门课没有选,则此时(1)select * from select_course sc where sc.student_id=ts.id andsc.course_id=c.id存在null,这说明(2)select* from course c 的查询结果中确实有记录不存在(1查询中),查询结果返回没有选的课程,此时select * from student ts 后的not exists 判断结果为false,不执行查询。
20.
SQL Server中,嵌套查询中的IN表示某一个字段在某一个集合里面,集合中可能有多个也可能只有一个值,但是只会有一个字段。任何一个子查询都是SELECT块,一定要加上(),否则就会报错。任何一个子查询都不能用ORDER BY排序,只能对最终的查询结果进行排序。子查询的结果只是作为父查询的某一个条件而已,还可以用AND,OR等追加更多的条件。A
21.
SQL Server中CAST()函数和CONVERT()函数有()区别 (选择一项)
A:没有什么不同
B:cast()比convert()函数执行速度更快
C:convert()可以通过第三个参数指定转换后字符样式
D:cast()可以通过第三个参数指定转换后字符样式
主要针对CONVERT函数可以通过可选的参数进行转换样式的设置
24.区局变量和局部变量的区别是()
A:两者没有什么区别
B:前者可以赋值,后者不能赋值
C:前者不能赋值,后者可以赋值
D:前者用@声明,后者用@@声明
全局变量前缀是”@@”,并且系统变量不能修改和赋值,局部变量可以声明和赋值,前缀是“@”,因此选C
25.
选择 C SQLServer中,先按id字段排序,使用MAX()函数查找出第2000条记录的id,再对比获取比第2000条记录id字段值大的前5条记录即为我们需要的结果。
29.
T-SQL中,利用WHILE循环重复执行记录插入操作。本题WHILE循环中应对循环计数器变量@i进行增值运算;否则将是死循环。WHILE循环有多条语句,要使用BEGIN和END语句将重复执行的语句放在其中。
32.
在E-R图中有如下四个成分:
矩形框:表示实体,在框中记入实体名。
菱形框:表示联系,在框中记入联系名。
椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。
对于一对一联系,要在两个实体连线方向各写1;对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。
33.
在 SQL Server中,一下对表联接和子查询的理解,正确的是()。
A:当从多个表中查询数据时,优先选择子查询
B:表联接就是从两个不同的表中查询数据
C:子查询比较灵活,适合于作为查询的筛选条件
D:表联接和子查询不可能相互替换
当从多个表中查询数据时,优先选择表连接
表连接和子查询是可以相互交换的
35.
check 是默认约束;而不是外键;
外键是:Foregin key ;
36.
SQL Server中,需要输出Student表的第5页,就是41-50条记录。首先在子查询中获得Student表中前40条记录的id值,然后通过NOT IN将前40条记录排除,查询输出其剩余部分的前10条元素,即第5页Student记录。
37.
在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable)。全局变量是由系统定义的,在整个SQL SERVER实例内都能访问到的变量.全局变量以@@作为第一个字符,用户只能访问,不能赋值。局部变量由用户定义,生命周期只在一个批处理内有效。局部变量以@作为第一个字符,由用户自己定义和赋值。
41.
以下转换不正确的是()。
A:select convert(‘北京欢迎你’ as int)
B:select convert (‘北京欢迎你’ ,nvarchar)
C:select convert(varchar,‘北京欢迎你’)
D:select convert(binary,‘北京欢迎你’)
此题目考察的是CONVERT()函数转换类型,CONVERT()中有两个参数,第一个是数据类型,第二个为表达式,所以选项C、D是正确的,选项A、B是不正确的。
47.
T-SQL中,Case语句有两种格式。选项A和选项D代码分别符合Case语句的两种语法格式。但选项B的Case语句编写有错,在结束位置使用as而不是end关键字;而执行选项C代码在结果集中会出现2个ClassID列,与本题要求不符