美文网首页
二、高级查询

二、高级查询

作者: 筱__ | 来源:发表于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。

    相关文章

      网友评论

          本文标题:二、高级查询

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