SQL Server高级查询错题分析

来源:互联网 发布:软件升级管理 编辑:程序博客网 时间:2024/05/17 20:46

               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  表名

 选项Acreate 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循环有多条语句,要使用BEGINEND语句将重复执行的语句放在其中

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条元素,即第5Student记录。

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()中有两个参数第一个是数据类型,第二个为表达式,所以选项CD是正确的,选项AB是不正确的。

 

 

47.

 T-SQL中,Case语句有两种格式。选项A和选项D代码分别符合Case语句的两种语法格式。但选项BCase语句编写有错,在结束位置使用as而不是end关键字;而执行选项C代码在结果集中会出现2ClassID列,与本题要求不符

0 0