1.设在SOLServer 208菜数据库中有图书表(书号,书名,出版日期,单价》,其中"书号 是主码。现要查的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.设在SNSerer 203某数据库中有商品表(商品号,商品名,类别,单价)和销售表〈商品号,销售时间,销售数量》。现要查c前2O05年9月没有被卖出过的手机^类商品的商品名和单价。下列查询语句中能正确完成该查询要求的是
A、SELECT 商品名,单价 FROM 商品表
WHERE 商品号 IN(
SELECT 商品号 FROM 销售表
WHERE 销售时间 BETWEEN '2015/9/1' AND '2015/9/30'
AND 类别!='手机')
AND 类别='手机'
B、SELECT 商品名,单价 FROM 商品表
JOIN 销售表 ON 商品表.商品号=销售表.商品号
WHERE 销售时间 NOT BETWEEN ‘2015/9/1’ AND '2015/9/30'
AND 类别='手机'
C、SELECT 商品名,单价 FROM 商品表
WHERE 商品号 NOT IN (
SELECT 商品号 FROM 销售表
WHERE 销售时间 BETWEEN '2015/9/1’ AND ’2015/9/30'
AND 类别='手机')
AND 类别 ='手机'
D、SELECT 商品名,单价 FROM 商品表
JOIN 销售表 ON 商品表.商品号=销售表.商品号
WHERE 销售时间 BETWEEN '2015/9/1'
AND '2015/9/30' AND 类别 !='手机'
参考答案为C
解析:使用子查询进行基于集合的测试时,通过运算符IN和NOT IN,将一个表达式的值与子查询返回的结果集进行比较。其形式是:
WHERE表达式 [NOT] IN (子查询)
这种形式的子查询的语句是分步骤实现的,即先执行子查询,然后在子查询的结果基础上再执行外层查询。本题中子查询查询的是在2015年9月卖出的手机,然后再查询不属于这个范围的商品名和单价。故答案为C。
3.没有汽车表(汽车型号,汽车名称,颜色,价格〉,其中“汽车型号“是主码。现要查询全部白色和黑色汽车的名称、颜色和价格。下列语句中能正确完成该查询要求的是
A、SELECT 汽车名称,颜色,价格 FROM 汽车表
WHERE 颜色='白色' OR 颜色='黑色'
B、SELECT 汽车名称,颜色,价格 FROM汽车表
WHERE 颜色='白色' AND 颜色='黑色'
C、SELECT 汽车名称,颜色,价格FROM汽车表
WHERE 颜色 LIKE '[白色黑色]'
D、SELECT 汽车名称,颜色,价格FROM汽车表
WHERE 颜色 LIKE '[白色,黑色]'
参考答案为A
解析: like关键字主要是针对字符型字段的,其作用是在一个字符型字段列中检索包含对应子串,选项C、D错误。And关键字两边的条件同时满足时才会查询出结果,选项B的功能是查询汽车颜色白色同时也是黑色,没有这样的汽车。故答案为A。
4.没有汽车销售表(汽车型号,销售时间,销售价格。销售数量》,其中(汽车型号,销售时间〉是主码。现要查前215年销售总数量最多的汽车的汽车型号和销售总数量(包括并列情况》。下列语句中能正确完成该查询要求的是
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 销售时间 BETWEEN '2015/1/1' AND '2015/12/31'
GROUP BY 汽车型号
ORDER BY SUM(汽车型号) ASC
参考答案为C
解析:本题使用TOP谓词来限定输出的结果,DESC表示降序,ASC表示升序,题面要求查询销售总数量最多的汽车,所以应该查询降序排列时的第一条记录,故选项BD错误。
选项A中按照汽车型号排序,不符合题面要求的按照销售总数量排序,故答案为C。
5.设有员工表(员工号,姓名,工资,所在部门》,其中“员工号"是主码。现要查询"基础部"工资最低的职工姓名和工资。下列语句中能正确完成该查询要求的是
A、SELECT 姓名,工资 FROM 员工表
WHERE 工资 IN(
SELECT MIN(工资、FROM 员工表
WHERE 所在部门='基础部')
AND 所在部门='基础部'
B、SELECT 姓名,工资 FROM 员工表
WHERE工资IN(
SELECT MIN(工资、FROM 员工表
WHERE所在部门='基础部')
C、SELECT 姓名,工资 FROM 员工表
WHERE工资IN(
SELECT MAX(工资、FROM 员工表
WHERE 所在部门='基础部')
AND 所在部门='基础部'
D、SELECT 姓名,工资 FROM 员工表
WHERE工资IN(
SELECT MAX(工资、FROM 员工表
WHERE所在部门='基础部')
参考答案为A
解析:题面中要求查询工资最低的职工,应该是用MIN函数,故选项CD错误。
选项B中执行子查询之后,外层查询缺少判断部门为基础部的语句。
故答案为A。
6.设有教师表(教师号,教师名,职称,性别),其中“教师号”是主键。现要查询具有“教授”职称的女教师人数,下列语句中能正确完成该查询要求的是
A、SELECT COUNT(*) FROM 教师表 WHERE 职称='教授' and 性别='女'
B、SELECT SUM(职称) FROM 教师表 WHERE职称='教授' or 性别='女'
C、SELECT COUNT(职称) FROM教师表WHERE职称='教授' or 性别='女'
D、SELECT SUM(*) FROM 教师表 WHERE 职称='教授' and 性别='女'
参考答案为A
解析: 本题考查的知识点是:数据查询
B、D是求和,而题中要求的人数应该是计数,所以B、D错。
C的条件是职称是教授或者性别为女,题中要求是女教授,应该用and,所以C错,故答案为A。
7.设在SQLServer中有如下定义触发器的语句:
CREATE TRIGGER tri_1
ON T1 FOR UPDATE
AS……
下列关于该触发器作用的说法,正确的是
A、在T1表上定义了一个由数据更改操作引发的前触发型触发器
B、在T1表上定义了一个由数据增、删、改操作引发的后触发型触发器
C、在T1表上定义了一个由数据更改操作引发的后触发型触发器
D、在T1表上定义了一个由数据增、删、改操作引发的前触发型触发器
参考答案为C
解析:使用FOR或者AFTER选项定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行该触发器。使用INSTEAD OF选项定义的触发器为前触发型触发器,在这种模式的触发器中,指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代触发的操作。
语句中指定的操作是update,更新操作。
8.下列关于SQL Server索引的说法,正确的是
A、聚集索引只能建立在一个列上
B、唯一索引不能是聚集索引
C、在没有建立聚集索引的表上定义主键,系统会自动在主键上建立聚集索引
D、在一个表上不能建立多个唯一索引
参考答案为C
解析:创建索引的简化语法格式为:
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX index_name
ON (column [ASC|DESC][,…n])
column:索引所基于的一个列或多个列。如果指定多个列名,则可为指定列的组合值创建组合索引。
由语法可知AB错误。
唯一索引可以确保索引列不包含重复的值。在多列唯一索引的情况下,可以确保索引列中每个值的组合都是唯一的(D错)。
9.设在SQL Server中,有如下创建分区函数的语句:
CREATE PARTITION FUNCTION PFl(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
解析:创建分区函数的sql语句是:
CREATE PARTITION FUNCTION partition_function_name(input_parameter_type)
AS RANGE [LEFT|RIGHT]
FOR VALUES([boundary_value[,…n]])
[;]
由语法可知,本题中分区的边界值分别是100和200,那么将被分为3个区间,分别是<=100、>=101 and <=200、>200。
10.设有房屋表(房屋号,面积,月租金),其中“房屋号”是主键。现要查询面积在10-120平米的房屋中,月租会最便宜的房屋号和月租金。下列语句中能正确完成该查询要求的是
A、SELECT TOP 1 WITH TIES 房屋号,月租金 FROM 房屋表
WHERE 面积 BETWEEN 100 AND 120
ORDER BY 月租金 DESC
B、SELECT 房屋号,月租金 FROM 房屋表
WHERE 月租金=MIN(月租金) AND 面积 BETWEEN 100 AND 120
C、SELECT TOP 1 WITH TIES 房屋号,月租金 FROM 房屋表
WHERE 面积 BETWEEN 100 AND 120
ORDER BY 月租金 ASC
D、SELECT 房屋号,月租金 FROM 房屋表
WHERE 面积 BETWEEN 100 AND 120
AND 月租金 IN (SELECT MIN(月租金) FROM 房屋表)
参考答案为C
解析:根据题意,本题考察的是查询月租金最便宜的,所以应该针对月租金升序排序,取top 1,并且限定的条件是面积在100-120平米之间。
A选项为降序,错。
B选项,聚合函数min应在having中,或者子查询中出现,错。
D选项,子查询将返回所有租金中的最小值,与父查询的条件between 100 and 120所限定的不符,导致检索结果为空。
故答案为C。
11.设有图书表(书号,书名、价格、出版日期》,其中书号是主码,出版日期为tcate类型。现要查询2018年出版的全部图书的书名和价格。下列语句中能正确完成该查询要求的是
A、SELECT书名,价格FROM图书表
WHERE出版日期BETWEEN 2018-01-01 AND 2018-12-31
B、SELECT书名,价格FROM图书表
WHERE出版日期=2018
C、SELECT书名,价格 FROM图书表
WHERE出版日期=‘2018’
D、SELECT书名,价格FROM图书表
WHERE出版日期 BETWEEN '2018-01-01’AND ‘2018-12-31’
参考答案为D
解析:SQL语言中,日期型数据需要使用英文单引号引起。如需单独引用年份,则需对日期型数据调用取年份函数year( )进行计算。
故本题答案为D。
12.在某SULServer 200S数据库中有销售表(书号,销售日期,销售数量),主码是(书号,销售日期)。现要查询累计销售数量最多的图书的销售总数量。下列语句中能正确完成该查询要求的是
A、SELECT MAX(销售数量)FROM 销售表
ORDER BY销售数量DESC
B、SELECT TOP 1 COUNT(销售数量)FROM销售表
GROUP BY书号
ORDER BY COUNT(销售数量)DESC
C、SELECT TOP 1 SUM(销售数量)FROM 销售表
GROUP BY书号
ORDER BY SUM(销售数量)DESC
D、SELECT MAX(销售数量)FROM 销售表
GROUP BY书号
参考答案为C
解析:累计销售数量,需要利用sum函数。最多,需要使用order by短语desc降序排序,配合top 1限制结果集。
13.设有员工表(员工号,姓名,年龄,所在部门),其中"员工号"是主码。现要查询部门人数最多的部门。下列语句中能正确完成该查询要求的是
A、SELECT TOP 1 WITH TIES所在部门FROM员工表
GROUP BY所在部门
ORDER BY COUNT(*)DESC
B、SELECT TOP 1 所在部门FROM员工表
GROUP BY所在部门
ORDER BY SUM(员工号)DESC
C、SELECT MAX(员工号)FROM员工表
GROUP BY 所在部门
D、SELECT MAX(员工号)FROM员工表
ORDER BY所在部门
参考答案为A
解析: C、D选项在不考虑group by和order by短语的前提下都能确定,显示的是员工号最大的那个员工,而非题目要求的部门号。
A选项不仅考虑了存在“并列最多”的情况,在排序方面也是按记录数量降序,不存在任何问题。
故本题答案为A。
14.设有房屋表(房屋号,地址,居室数,月租金),其中"房屋号”是主码。现要查询2居室中月租金最低的3个房屋的房屋号和月租金。下列语句中能正确完成该查询要求的是
A、SELECT TOP3房屋号,月租金FROM房屋表
WHERE居室数=2
ORDER BY月租金 ASC
B、SELECT TOP3房屋号,月租金 FROM房屋表
WHERE居室数=2
ORDER BY月租金 DESC
C、SELECT TOP 3房屋号,月租金FROM 房屋表
WHERE居室数= 2
ORDER BY居室数ASC
D、SELECT TOP 3房屋号,月租金FROM房屋表
WHERE居室数= 2
ORDER BY居室数DESC
参考答案为A
解析:通过题目描述可以分析出具体操作,检索条件为"2居室",然后针对月租做升序排序,取前3条记录。