美文网首页
二、高级查询

二、高级查询

作者: 筱__ | 来源:发表于2019-08-20 10:32 被阅读0次

1.设在SQL Server 2008某数据库中有图书表(书号,书名,出版日期,单价),其中”书号“是主码。现要查询2015年1月份出版的单价最高的前三本图书的详细信息。下列查询语句中能正确完成该查询要求的是_

A.

SELECT TOP 3 * FROM 图书

WHERE出版日期  BETWEEN  #2015/1/1# AND #2015/1/31#

ORDER  BY 单价 DESC

B.

SELECT TOP 3 * FROM 图书表

WHERE出版日期  BETWEEN  ’2015/1/1' AND ’2015/1/31' 

ORDER  BY 单价 DESC

C.

SELECT  *  TOP  3  FROM 图书表

WHERE出版日期  BETWEEN’2015/1/1’AND ’2015/1/31'

ORDER  BY 单价 DESC

D.

SELECT * TOP 3  FROM 图书表

WHERE 出版日期 BETWEEN  #2015/1/1# AND #2015/1/31#

ORDER BY单价 DESC 

  答案: B

      C、D两项的语法格式不正确,TOP 3应该放在*之前,选项A的日期格式不正确。故答案为B。

2.设有汽车表(汽车型号,汽车名称,颜色,价格),其中“汽车型号”是主码。现要查询全部白色和黑色汽车的名称、颜色和价格。下列语句中能正确完成该查询要求的是_

A.  SELECT汽车名称,颜色,价格FROM 汽车表

WHERE颜色=’白色’0R 颜色=’黑色’

B. SELECT汽车名称,颜色,价格FROM 汽车表

WHERE颜色=’白色’AND 颜色=’黑色’

C. SELECT 汽车名称,颜色,价格FROM汽车表

WHERE颜色LIKE ’[白色黑色]’

D. SELECT汽车名称,颜色,价格FROM 汽车表

WHERE颜色 LIKE’[白色,黑色]’

答案: A

Like关键字主要是针对字符型字段的,其作用是在一个字符型字段列中检索包含对应子串,选项C、D错误。And关键字两边的条件同时满足时才会查询出结果,选项B的功能是查询汽车颜色白色,同时也是黑色,没有这样的汽车。故答案为A。

3.设在SQL Server 2008某数据库中有商品表(商品号,商品名,类别,单价)和销售表(商品号,销售时间,销售数量)。现要查询2015年9月没有被卖出过的“手机”类商品的商品名和单价。下列查询语句中能正确完成该查询要求的是____。

A.  SELECT商品名,单价FROM 商品表

WHERE 商品号 IN (

SELECT 商品号 FROM 销售表

VHERE 销售时间 BETVEEN’2015/9/1' AND’2015/9/30'  AND 类别!=’手机') 

AND类别=’手机’

B. SELECT 商品名,单价FROM商品表  JOIN销售表 ON 商品表商品号=销售表.商品号

WHERE 销售时间 NOT BETVEEN’2015/9/1’AND’2015/9/30' AND类别=’手机’

C. SELECT商品名,单价 FROM 商品表WHERE商品号NOT IN (

SELECT商品号FROM销售表

WHERE销售时间 BETVEEN’2015/9/1' AND’2015/9/30' AND 类别=’手机’)

AND 类别='手机'

答案解析:

      使用子查询进行基于集合的测试时,通过运算符IN和NOT IN,将一个表达式的值与子查询返回的结果集进行比较。其形式是: WHERE表达式[NOT] IN (子查询)

      这种形式的子查询的语句是分步骤实现的,即先执行子查询,然后在子查询的结果基础上再执行外层查询。本题中子查询查询的是在2015年9月卖出的手机,然后再查询不属于这个范围的商品名和单价。故答案为C。

4.设有汽车销售表(汽车型号,销售时间,销售价格,销售数量),其中(汽车型号,销售时间)是主码。现要查询2015年销售总数量最多的汽车的汽车型号和销售总数量(包括并列情况)。下列语句中能正确完成该查询要求的是_

A.

SELECT TOP 1 WITH TIES汽车型号,SUM(汽车型号) FROM汽车销售表

WHERE销售时间 BETWEEN ' 2015/1/1' AND’ 2015/12/31'

GROUP BY汽车型号

ORDER BY SUM(汽车型号) DESC

B.

SELECT TOP 1 WITH TIES汽车型号,SUM(销售数量) FROM 汽车销售表

WHERE 销售时间 BETWEEN ’ 2015/1/1' AND’ 2015/12/31'

GROUP BY汽车型号

ORDER BY SUM(销售数量) ASC

C.

SELECT TOP 1 WITH TIES汽车型号,SUM(销售数量) FROM 汽车销售表

WHERE 销售时间 BETWEEN ’2015/1/1' AND ’ 2015/12/31'

GROUP BY汽车型号

ORDER BY SUM(销售数量) DESC

D.

SELECT TOP 1 WITH TIES汽车型号,SUM(汽车型号) FROM汽车销售表

WHERE销售时间BETVEEN ’2015/1/1' AND ’2015/12/31'

GROUP BY汽车型号

ORDER BY sUM (汽车型号) ASC

答案解析:

本题使用TOP谓词来限定输出的结果,表示DESC降序,ASC表示升序,题面要求查询销售总量最多的汽车,所以应该查询降序排列时的第一条记录,故选b,d错误,选项a按照汽车型号排序,不符合题目要求的,按照销售总数量排序,故选C.

5.设在SQL Server中,有如下创建分区函数的语句:

CREATE  PARTTION  FUNCTION  PF1 (int)

AS RANGE LEFT FOR VALUES (100, 200)

该语句的功能是____。

A. 创建了1个分区,区间是: [100, 200]

B. 创建了2个分区,区间分别是: <=100, >=200

C. 创建了3个分区,区间分别是: <=100, [101, 200], >200

D. 创建了3个分区,区间分别是: <100, [100, 200], >200

答案: C

创建分区函数的sq1语句是:

CREATE PARTITION  FUNCTION  partition_function_name (input_parameter_type)

AS RANGE [LEFT IRIGHT]

FOR VALUES([boundary value[,...n] ] )

[;]

由语法可知,本题中分区的边界值分别是100和200,那么将被分为3个区间,分别是<=100、 >=101 and <=200、 >200。

6.下列关于SQL Server索引的说法,正确的是_

A. 聚集索引只能建立在一个列上

B. 唯一索引不能是聚集索引

C. 在没有建立聚集索引的表上定义主键,系统会自动在主键上建立聚集索引

D. 在一个表上不能建立多个唯一 索引

答案: C

创建索引的简化语法格式为:

CREATE [UNIQUE] [CLUSTERED] [NONCLUSTERED] INDEX index_ name

0N <object> (column [ASC IDESC][, .n]).

colum:索引所基于的一个列或多个列。如果指定多个列名,则可为指定列的组合值创建组合索引。由语法可知AB错误。

唯一索引可以确保索引列不包含重复的值。在多列唯一索引的情况下, 可以确保索引列中每个值的组合都是唯一的(D错)。

1. SELECT基本语法格式是:

          SELECT 查询内容

          FROM 表名

          WHERE 条件表达式

          GROUP BY 待分组的列名

          HAVING 列名

          ORDER BY 待排序的列名

2. 在一个T-SQL语言中, 如果要将1表中的全部数据复制到T2表中,T2表目前还不存在,可使用语句:

SELECT * __________  T2  FROM T1

SELECT INTO 语句表示从一个表中选取数据,然后把该数据插入到另一个表中。该语句结构通常用于创建表的备份复件或者用于对记录进行存档。该语句使用时要求目标表不存在,因为在插入时会自动创建。

答案: INTO

3.  在T-SQL语言 中,如果要将1表中的全部数据复制到I2表中,T2表已存在,可使用语句:

________  T2 SELECT * FROM T1

对于已经存在的表,一般使用INSERT INTO语句插入数据,通常有两种方式,一种是插入一个元组,另一种是插入查询结果。本题考查的是插入查询结果。

答案: INSERT或INSERT INTO

4. SQL Server 2008提供了4个排名函数,其中_________,但排名中间数值可能有间断。

函数返回结果集中每行数据在每个分区内的排名,并且每个分区内的排名从1开始。

SQL Server提供了四个排名函数: RANK、 DENSE_ RANK、 NTILE和ROW_NUMBER, 其中RANK ()函数返回结果集中每个分区内行的序列号,每个分区的第一行从1开始。函数返回结果集中每行数据在每个分区内的排名,并且每个分区内的排名从1开始,但排名中间数值可能有间断。

答案: RANK或ROW_ NUMBER

4. 在SQL Server 2008的LIKE子句中,可以匹配到多个字符的通配符是叫______

[ ]匹配指定范围内或者属于方括号所指定的集合中的任意单个字符

_匹配一个字符

[ ^ ]匹配不在方括号之间指定的范围或集合内的任何单个字符

%匹配包含零个或多个字符的任意字符串

5.SQL Server 2008提供了4个排名函数,其中_______ 函数返回结果集中每行数据在每个分区内的排名,并且每个分区内行的排名从1开始,排名可重复且不间断。

SQL Server提供了四个排名函数: RANK、 DENSE RANK、NTILE和ROW_ NUMBER。

DENSE_RANK ( )函数与RANK ()函数的作用基本一样,使用方法也一样,唯一的区别是DENSE_RANK( )的函数排名中间没有任何间断,即该函数返回的是一个连贯的整数值。

答案: DENSE_RANK

6.在SQL Server 2008中,设有关系表:职工(工号,姓名,所在部门),现要查询职工姓名、所在部门及该部门人数,请补全下列语句:

SELECT 姓名,所在部门 COUNT(*)______ (PARITION  BY 所在部门)  AS  部门人数  FROM  职工

SQL Server提供了两种开窗函数:排名开窗函数和聚合开窗函数。PARTITION  BY 将结果集划分为多个分区,0VER子句用于确定在应用关联的开窗函数之前对行集的分区和排序。

答案: OVER

7.现要统计1表中C1列取值不同的值的个数。请补全下列语句:

SELECT ____________  FROM  T1

使用 DISTINCT 关键字可以去掉查询中某个字段的重复记录。

统计个数,需要使用COUNT()。去除重复,需要使用DISTINCT。所以应填COUNT (DISTINCT C1)。

8.设有表选课 (学号,课程号,成绩),现要查询没选C01课程的学生学号。请补全下列语句:

SELECT 学号 FROM 选课 t1 WHERE ____

(SELECT *  FROM 选课 t2

WHERE tI学号=t2 学号 and t2 课程号='C01')

查询没选C01的学生学号,需要使用谓词not exists,用来检查子查询中是否有结果返回,当了查询中有满足条件的数据时,NOT EXISTS返回假值,反之,返回真值。所以应填NOT EXISTS。

9.在SQL Server中,现要查询T1表中C1列值最大的2行数据(不考虑并列情况)。请补全下列语句:

SELECT ____ * FROM T1 ORDER BY CI DESC

由于题中已针对C1降序排序,要取C1值最大的2行,只需要在select之后书写top 2。答案: TOP 2 或 TOP (2)

10.设有表选课 (学号,课程号,成绩),现要查询没选C01课程的学生学号。请补全下列语句:

SELECT 学号 FROM 选课 WHERE 学号 _____  (SELECT 学号 FROM 选课 WHERE 课程号='C01')

子查询(语句末尾被小括号括起的select语句)中查询返回的是选修了C01课程的学生的学号,而且从逻辑上可以判断得出不是返回一个学号,而是返回一组学号(不可能一门课只允许一个学生选修)。

答案: NOT IN。

相关文章

  • 二、高级查询

    1.设在SQL Server 2008某数据库中有图书表(书号,书名,出版日期,单价),其中”书号“是主码。现要查...

  • SQL高级查询(二)

    T2 基本查询应用 1.基本查询语句 2.聚合函数 3.分组查询(重点) 4.联接查询(难点) ---------...

  • SQL 查询命令

    一 数据库基本操作 二 高级查询 1. 新建表结构 2. 聚合查询 3. 多表查询 4. 连接查询 关于INNER...

  • SQL语言之查询

    SQL语言之查询(二) 前言 本章我们将学习SQL查询中的高级部分,如内连接、外连接和子查询,通过这些查询技术我们...

  • MySQL加强(二)——高级查询

    1.分组查询 1.1什么是分组: 针对于班上所有的同学: 分组情况1-按照性别分组:男生一组,女生一组,之后可以统...

  • 高级查询

    SQL语句的强化求所有电脑产品的平均价格,并且保留两位小数:select round(avg(price),2) ...

  • 高级查询

    分组函数 使用方法: MIN和MAX函数:返回每组的最小或最大值 可用于任何数据类型 应用: SUM和AVG函数:...

  • 高级查询

    -5个分组函数 where 中不可以有别名,where中不能有分组函数-- 组后条件 select 语句执行过程 ...

  • 高级查询

    数据库示例: 学生信息表student 成绩表score 一、子查询 一个内层查询语句(select-from-w...

  • 高级查询

    分页和过滤查询 流程图 : 前面我们已经讲过分页查询了 , 接下来我们讲讲 过滤查询 . 思路 : 从后台开始写 ...

网友评论

      本文标题:二、高级查询

      本文链接:https://www.haomeiwen.com/subject/muqrsctx.html