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。
网友评论