第一篇:查询练习题
《网络数据库》讲稿
查询练习题
简单的单表查询
例1:检索出1983年6月1日之后出生的学生的姓名、性别和民族,并按降序排列。
SELECT 姓名,性别,民族 FROM 学生 WHERE 出生日期>'1983-6-1' ORDER BY 出生日期 DESC
多表查询
在FROM后跟随多个表。
例1:查找出已修学分达到20分的学生的姓名、出生日期、班级名称、已修学分。
SELECT 姓名,出生日期,班级名称,已修学分FROM 学生,班级WHERE 学生.班级编号=班级.班级编号AND
已修学分>=20
解释:这里的“学生.班级编号=班级.班级编号”是连接条件。如果在FROM短语中有两个表,那么这两个表必须具备可建立联系的字段,否则无法查询。如果FROM短语中的多个表中有同名字段,当使用这些字段名时,需要在字段名左边加上表名和圆点,作为字段名的前缀。
练习题01:查找出已修学分低于20分的学生的姓名、性别和班主任。练习题02:查找出学生“王林”的班主任。
练习题03:查找出班主任“刘成河”班的全部男生的信息。
例2:查找出课程“中国历史”考试及格的全部学生的学号、姓名。
SELECT 学生.学号,姓名 FROM 学生,课程,成绩 WHERE 分数>=60 AND 课程名称='中国历史' AND 学生.学号=成绩.学号 AND 成绩.课程编号=课程.课程编号
练习题04:查找出课程“中国历史”考试及格的全部学生的学号、姓名、班级名称和分数。练习题05:查找出全部同学的所有考试的姓名、课程名称、分数,查找结果的格式如下:
嵌套查询
P121-126
例1:查找出取得过95分及其以上考试成绩的学生的学号和姓名。
SELECT 学号,姓名 FROM 学生 WHERE 学号IN(SELECT 学号 FROM 成绩 WHERE 分数>=95)
解释:该命令中的IN相当于集合运算的包含运算符∈。括号外的查询称为外层查询;括号内的查询称为内层查询(也称为“子查询”)。内层查询的结果被当做是一个集合。
P104
例2:查找出“计算机应用”课程考试取得95分及其以上考试成绩的学生的学号和姓名。
SELECT 学号,姓名 FROM 学生 WHERE 学号 IN(SELECT 学号 FROM 成绩 WHERE 分数>=95 AND 课程编号 IN(SELECT 课程编号 FROM 课程 WHERE 课程名称='计算机应用'))
例3:查找出所有学生的考试都及格的班级名称。
答案一:
SELECT 班级名称 FROM 班级 WHERE 班级编号 NOT IN(SELECT 班级编号 FROM 学生 WHERE 学号 IN(SELECT 学号 FROM 成绩 WHERE 分数<60))
答案二:
select 班级名称 from 班级
where not exists(select * from 学生 where
exists(select * from 成绩
where 分数<60 and 班级.班级编号=学生.班级编号 and 成绩.学号=学生.学号))
答案三:
select 班级名称 from 班级 where not exists(select * from 成绩,学生
where 班级.班级编号=学生.班级编号 and 学生.学号=成绩.学号 and 分数<60)
练习题01:查找出班主任“刘成河”班的全部男生的信息。练习题02:查找出考试全及格的课程名称。
练习题03:查找出所有学生的考试都及格的班级,并排除那些没有学生的班级。练习题04:使用多表查询实现例1。练习题05:使用多表查询实现例2。
练习题06:查找出“数学专业”班全体同学的姓名和“数学”课程考试分数。
三个特殊运算符
一、谓词EXISTS
P122
EXISTS判断子查询中是否为空集。
例1:查找出那些还没有学生的班级名称。
SELECT 班级名称 FROM 班级 WHERE NOT EXISTS
(SELECT * FROM 学生 WHERE 学生.班级编号=班级.班级编号)
例2:检索出每个学生都选修了的课程(并且考试都及格)。
SELECT 课程编号,课程名称 FROM 课程 WHERE NOT EXISTS(SELECT 学号 FROM 学生 WHERE NOT EXISTS(SELECT * FROM 成绩
WHERE 课程.课程编号=成绩.课程编号AND 学生.学号=成绩.学号AND 分数>=60))
练习题01:写出可实现例1要求的其他命令。练习题02:写出可实现例2要求的其他命令。
二、范围运算符BETWEEN …AND…
P103 该范围是一个闭区间,意思是在 …和… 之间,包括两个端点的值。
例3:查找出1983年6月1日至1984年6月1日之间出生的学生的信息。
SELECT * FROM 学生 WHERE 出生日期 BETWEEN '1983-6-1' AND '1984-6-1' 练习题03:查找出已修学分在15和20之间的学生的信息。
练习题04:查找出1983年6月1日至1984年6月1日之间出生的少数民族学生的信息。
练习题05:查找出已修学分在15和20之间、且“自然辨证法”课程的考试分数达到80分的学生的姓名、性别、所在班级。
三、字符串匹配运算符LIKE
P105 例4:查找出姓名中包含有“林”的学生的信息。SELECT * FROM 学生WHERE 姓名LIKE '%林%' 例5:查找出姓名中第二个字是“林”的学生的信息。SELECT * FROM 学生WHERE 姓名LIKE '_林%'
练习题06:查找出湖北出生的学生的信息。练习题07:查找出武汉出生的学生的信息。
练习题08:查找出班主任“郭大壮”的班中出生地是武汉的学生的姓名、班级。
练习题09:查找出至少参加了辛有余老师所任课程中一门课程考试的男生的姓名。至少写出两条不同的命令。
聚合函数及其分组查询
为了完成后续题目,请首先计算出每位同学的已修学分
UPDATE 学生 SET 已修学分=(SELECT SUM(学分)FROM 成绩,课程
WHERE 学生.学号=成绩.学号AND 分数>=60 AND 成绩.课程编号=课程.课程编号)
一、常用统计(聚合)函数
P109表4-3 例1:计算出全部学生的平均已修学分。SELECT AVG(已修学分)FROM 学生
例2:计算出“软件工程”班全体同学的平均已修学分。
SELECT AVG(已修学分)FROM 学生 WHERE 班级编号IN(SELECT 班级编号FROM 班级WHERE 班级名称='软件工程')
练习题01:计算出“软件工程”和“计算机应用”两个班全体同学的平均已修学分。
注意:当子查询的结果只有一个数据时,可以用等号;为多个数据时,需用 IN。练习题02:计算出李建同学各门课程考试总分。
例3:查找出“数学专业”班“数学”课程考试的最高分数。
SELECT MAX(分数)FROM 学生, 成绩 WHERE 学生.学号=成绩.学号 AND 班级编号=(SELECT 班级编号 FROM 班级 WHERE 班级名称='数学专业')AND 课程编号=(SELECT 课程编号 FROM 课程 WHERE 课程名称='数学')
另一个答案
SELECT MAX(分数)FROM 成绩 WHERE 学号 IN(SELECT 学号 FROM 学生 WHERE 班级编号=(SELECT 班级编号 FROM 班级 WHERE 班级名称='数学专业'))AND 课程编号=(SELECT 课程编号 FROM 课程 WHERE 课程名称='数学')
例4:查找出“数学专业”班“数学”课程考试最高得分的同学姓名和分数。
SELECT 姓名, 分数 FROM 学生, 成绩 WHERE 学生.学号=成绩.学号
AND 班级编号=(SELECT 班级编号 FROM 班级 WHERE 班级名称='数学专业')AND 课程编号=(SELECT 课程编号 FROM 课程 WHERE 课程名称='数学')AND 分数=(SELECT MAX(分数)FROM 学生, 成绩 WHERE 学生.学号=成绩.学号
AND 班级编号=(SELECT 班级编号 FROM 班级 WHERE 班级名称='数学专业')AND 课程编号=(SELECT 课程编号FROM 课程 WHERE 课程名称='数学'))
附:TOP … PERCENT
P98
二、GROUP BY短语
GROUP BY后面跟随的是分组关键字段,按照关键字段的值,将记录分成若干个组,每一组转变为查询结果中的一行。
例5:计算出各班学生的平均已修学分。SELECT 班级编号,AVG(已修学分)FROM 学生 GROUP BY 班级编号
练习题04:计算出各门课程考试的平均分数。练习题05:计算出各位学生的考试总分。
练习题06:计算出辛有余老师所任课程中每门课程的课程编号和学生平均考试分数。
三、别名及其应用
P113-114, P99
例6:查找出已修学分低于本班平均已修学分的学生信息。
SELECT 姓名, 班级编号, 已修学分 FROM 学生
WHERE 已修学分<(SELECT AVG(已修学分)FROM 学生 XS WHERE 学生.班级编号=XS.班级编号)
说明:在FROM短语中为表取别名也可省略AS,例如FROM 学生 XS。
例7:查找和计算出各位学生的姓名和考试总分。
SELECT 姓名, 总分
FROM 学生,(SELECT 学号, SUM(分数)AS 总分 FROM 成绩 GROUP BY 学号)AS ZF WHERE 学生.学号=ZF.学号
说明:在FROM短语中可用子查询的结果作为表,此时,必须为该子查询取别名。
在SELECT短语中可为查询结果列取别名,其格式有三种,见P99。
练习题07:查找和计算出各门课程的名称及其考试的平均分数。
练习题08:查找和计算出各门课程的名称及其考试达到90分的人数。
四、HAVING短语
HAVING后面跟随的是筛选条件,作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含统计(聚合)函数。
例8:查找出讲授多门课程的教师姓名及其授课门数。
SELECT 任课教师,COUNT(*)AS 授课门数 FROM 课程 GROUP BY 任课教师 HAVING COUNT(*)>1 说明:HAVING短语通常与GROUP BY短语配合使用,否则无使用价值。HAVING短语中使用的统计函数应该是SELECT短语中使用的函数。
练习题10:查找出考试成绩优秀人数多于3人的课程编号及其学生人数(假定考试分数达到90分为优秀)。练习题11:查找出考试成绩优秀人数多于3人的课程名称及其学生人数(假定考试分数达到90分为优秀)。练习题12:查找出考试成绩优秀人次多于5人次的班级名称及其人次(假定考试分数达到90分为优秀)。
练习题13:查找出考试分数标准差小于
10、且最高分与最低分之差小于20的各班(班级名称)各门课程(课程名称)的考试人数,考试分数的最高分、最低分、平均分、标准差、方差。
常用函数、连接
一、常用函数
P159
二、链接 P114 用于多表查询,实现表之间的链接。
例6:在多表查询中,下面的命令可查找出已修学分达到17分的学生的姓名、出生日期和班级:SELECT 姓名,出生日期,班级名称 FROM 学生,班级 WHERE 学生.班级编号=班级.班级编号 AND 已修学分>=17 用INNER JOIN … ON …,可将该命令改写为:
SELECT 姓名,出生日期,班级名称 FROM 学生 INNER JOIN 班级 ON 学生.班级编号=班级.班级编号
WHERE 已修学分>=17 或
SELECT 姓名,出生日期,班级名称 FROM 学生 INNER JOIN 班级 ON 学生.班级编号=班级.班级编号 AND 已修学分>=17
解释:这里的“学生.班级编号=班级.班级编号”是连接条件。如果在FROM短语中有两个表,那么这两个表必须具备可建立联系的字段,否则无法查询。如果FROM短语中的多个表中有同名字段,当使用这些字段名时,需要在字段名左边加上表名和圆点,作为字段名的前缀。
练习题01:查找出已修学分低于17分的学生的姓名、性别和班主任。练习题02:查找出学生“王林”的班主任。
练习题03:查找出班主任“刘成河”班的全部男生的信息。
例7:在多表查询中,下面的命令可查找出课程“中国历史”考试及格的全部学生的学号、姓名:SELECT 学生.学号,姓名 FROM 学生,课程,成绩 WHERE 分数>=60 AND 课程名称=“中国历史” AND 学生.学号=成绩.学号 AND 成绩.课程编号=课程.课程编号
用INNER JOIN … ON …,可将该命令改写为:
SELECT 学生.学号,姓名 FROM 学生 INNER JOIN(成绩 INNER JOIN 课程 ON 成绩.课程编号=课程.课程编号)ON 学生.学号=成绩.学号 WHERE 分数>=60 AND 课程名称=“中国历史”
练习题04:查找出课程“中国历史”考试及格的全部学生的学号、姓名、班级和分数。练习题05:查找出全部同学的所有考试的姓名、课程名称、分数。查找结果的格式如下:
练习题06:计算出每个同学实际取得的学分(不是学生表中的已修学分)。查找结果的格式如下:
操作查询
一、生成表查询
P136
例1:
SELECT 姓名, 出生日期, 班级名称 INTO XYZ FROM 学生, 班级
WHERE 学生.班级编号=班级.班级编号 AND 已修学分>=17 例2:
SELECT 班级名称, 课程名称, 分数 INTO 考试分数
FROM 课程 INNER JOIN((班级 INNER JOIN 学生 ON 班级.班级编号 = 学生.班级编号)INNER JOIN 成绩 ON 学生.学号 = 成绩.学号)ON 课程.课程编号 = 成绩.课程编号
二、更新查询
P137
例3:将每位同学的已修学分设置为0。
UPDATE 学生 SET 已修学分=0 将每位同学的已修学分设置为4。UPDATE 学生 SET 已修学分=4 省略WHERE短语,表示无条件修改全部记录。例4:为每个女生增加2学分。
UPDATE 学生 SET 已修学分=已修学分+2 WHERE 性别= “女”
练习题01:(综合练习)首先为“学生”表添加一个整型字段“年龄”,然后用UPDATE命令计算出每位同学的年龄并填入“年龄”字段。
例5:根据考试成绩,计算出每位同学的实际已修学分,并填入“学生”表的“已修学分”字段。
UPDATE 学生 SET 已修学分=(SELECT SUM(学分)FROM 成绩,课程
WHERE 学生.学号=成绩.学号AND 分数>=60 AND 成绩.课程编号=课程.课程编号)
练习题02:根据“学生”表,计算出每班的男生人数和女生人数,并填入“班级”表中。
三、追加查询
P134
四、删除查询
P141 例6:删除XS表中已修学分低于4分的记录。
DELETE FROM XS WHERE 已修学分<4 例7:删除没有学生的班级。
DELETE FROM 班级 WHERE 班级编号 NOT IN(SELECT 班级编号 FROM 学生 WHERE 班级编号 IS NOT NULL)
练习题03:删除没有参加过任何考试的学生。
练习题04:删除考试平均分数低于本班所有学生全部考试平均分数的同学。
第二篇:access查询练习题
考点7:查询
1.若在“tEmployee”表中查找所有出生日期在“1970-1-1”和“1980-1-1”之间的记录,可以在查询设计视图的准则行中输入()。答案:A
A)Between #1970-1-1# And #1980-1-1#
B)Between “1970-1-1” And “1980-1-1”
C)“1970-1-1” And “1980-1-1”
D)#1970-1-1# And #1980-1-1#
2.下面显示的是查询设计视图,从设计视图所示的内容中判断此查询将显示()。答案:B
A)出生日期字段值
B)所有字段值 C)除出生日期以外的所有字段值
D)雇员ID字段值
3.在SQL查询中“GROUP BY”的含义是()。答案:D
A)选择行条件
B)对查询进行排序
C)选择列字段
D)对查询进行分组
4.若要将“产品”表中所有供货商是“ABC”的产品单价下调50,则正确的SQL语句是()。答案:B
A)UPDATE 产品 SET 单价=50 WHERE 供货商=“ABC”
B)UPDATE 产品 SET 单价=单价-50 WHERE 供货商=“ABC”
C)UPDATE FROM 产品 SET 单价=50 WHERE 供货商=“ABC”
D)UPDATE FROM 产品 SET 单价=单价-50 WHERE 供货商=“ABC”
5.下面不是操作查询的是()。答案:C
A)删除查询
B)更新查询
C)参数查询
D)生成表查询
6.在SQL语言的SELECT语句中,用于实现选择运算的子句是()。答案:D
A)FOR
B)IF
C)WHILE
D)WHERE
7.在SQL查询中,若要取得“学生”数据表中的所有记录和字段,其SQL语法为()。答案:B
A)SELECT 姓名 FROM 学生
B)SELECT * FROM 学生
C)SELECT 姓名 FROM 学生 WHILE 学号=02650 D)SELECT * FROM 学生 WHILE 学号=02650
8.假设某数据表中有一个工作时间字段,查找1999年参加工作的职工记录的准则是()。答案:A
A)Between # 99-01-01# And # 99-12-31 #
B)Between “ 99-01-01 ” And “ 99-12-31 ”
C)Between “ 99.01.01 ” And “ 99.12.31 ”
D)# 99.01.01 # And # 99.12.31 #
9.SQL的含义是()。答案:A
A)结构化查询语言
B)数据定义语言
C)数据库查询语言
D)数据库操纵与控制语言
10.在Access中已建立了“学生”表,表中有“学号”、“姓名”、“性别”和“入学成绩”等字段。执行如下SQL命令“Select 性别, avg(入学成绩)From 学生 Group by 性别”其结果是()。答案:B
A)计算并显示所有学生的性别和入学成绩的平均值
B)按性别分组计算并显示性别和入学成绩的平均值
C)计算并显示所有学生的入学成绩的平均值
D)按性别分组计算并显示所有学生的入学成绩的平均值
11.假设“公司”表中有编号、名称、法人等字段,查找公司名称中有“网络”二字的公司信息,正确的命令是()。答案:D
A)SELECT * FROM 公司 FOR 名称= “*网络*” B)SELECT * FROM 公司 FOR 名称 LIKE “*网络*”
C)SELECT * FROM 公司 WHERE 名称= “*网络*” D)SELECT * FROM 公司 WHERE 名称 LIKE “*网络*”
12.下图是使用查询设计器完成的查询,与该查询等价的SQL语句是()。
答案:A
A)select 学号,数学 from sc where 数学>(select avg(数学)from sc)
B)select 学号 where 数学>(select avg(数学)from sc)
C)select 数学 avg(数学)from sc
D)select 数学>(select avg(数学)from sc)
13.在查询设计视图中()。答案:A
A)可以添加数据库表,也可以添加查询
B)只能添加数据库表
C)只能添加查询
D)数据库表和查询都不能添加
14.检索价格在30万~60万元的产品,可以设置条件为()。答案:C
A)“>30 Not <60”
B)“>30 Or <60”
C)“>30 And <60”
D)“>30 Like <60”
15.下列关于SQL语句的说法中,错误的是()。答案:D
A)INSERT语句可以向数据表中追加新的数据记录
B)UPDATE语句用来修改数据表中已经存在的数据记录
C)DELETE语句用来删除数据表中的记录
D)CREATE语句用来建立表结构并追加新的记录
16.下列不属于操作查询的是()。答案:A
A)参数查询
B)生成表查询
C)更新查询
D)删除查询
17.在Access数据库中创建一个新表,应该使用的SQL语句是()。答案:A
A)Create Table
B)Create Index
C)Alter Table
D)Create Database
18.下面显示的是查询设计视图的“设计网格”部分:从所显示的内容中可以判断出该查询要查找的是()。答案:A
A)性别为“女”并且1980年以前参加工作的记录
B)性别为“女”并且1980年以后参加工作的记录
C)性别为“女”或者1980年以前参加工作的记录
D)性别为“女”或者1980年以后参加工作的记录
19.在一个操作中可以更改多条记录的查询是()。答案:B
A)参数查询
B)操作查询
C)SQL查询
D)选择查询
20.直接将命令发送ODBC数据,它使用服务器能接受的命令,利用它可以检索或更改记录的是()。答案:B
A)联合查询
B)传递查询
C)数据定义查询
D)子查询
21.要求按学生学号统计出每名学生的借阅次数,下列SQL语句中,正确的是()。答案:B
A)Select 学号,Count(学号)from 借阅
B)Select 学号,Count(学号)from 借阅 Group By 学号
C)Select 学号,Sum(学号)from 借阅
D)Select 学号,Sum(学号)from 借阅 Order By 学号
22.在一个Access的表中有字段“专业”,要查找包含“信息”两个字的记录,正确的条件表达式是()。答案:B
A)=left([专业],2)=“信息”
B)like “*信息*”
C)=“信息*”
D)Mid([专业],1,2)=“信息”
23.Access支持的查询类型有()。答案:A
A)选择查询、交叉表查询、参数查询、SQL查询和操作查询
B)基本查询、选择查询、参数查询、SQL查询和操作查询
C)多表查询、单表查询、交叉表查询、参数查询和操作查询
D)选择查询、统计查询、参数查询、SQL查询和操作查询
24.要从数据库中删除一个表,应该使用的SQL语句是()。答案:D
A)ALTER TABLE
B)KILL TABLE
C)DELETE TABLE
D)DROP TABLE
25.在Access中已建立了“教师”表,表中有“教师编号”、“职称”、“性别”和“年龄”等字段。执行如下SQL命令:SELECT Count(“教师编号”)AS 各类职称人数 FROM 教师 GROUP BY 职称其结果是()。答案:B
A)计算并显示各类职称人数的职称和教师编号
B)按职称分组,并计算教师编号的个数以各类职称人数显示
C)计算所有教师编号的个数,以各类职称人数显示
D)按各类职称人数分组计算并显示教师编号的个数和职称
26.在SELECT语句中使用ORDER BY子句是为了指定()。答案:B
A)查询的表
B)查询的结果顺序
C)查询的条件
D)查询的字段
27.若要查询成绩为70~80分之间(包括70分,不包括80分)的学生的信息,查询准则设置正确的是()。答案:C
A)>69 or <80
B)Between 70 with 80
C)>=70 and <80
D)IN(70,79)
28.对“将信息系1999年以前参加工作的教师的职称改为副教授”,合适的查询为()。答案:B
A)生成表查询
B)更新查询
C)删除查询
D)追加查询
29.下图是简单查询向导:其中按钮和按钮分别代表的意思是()。答案:A
A)单击按钮一次选择一个字段,单击按钮一次选择全部字段
B)单击按钮一次选择一个字段,单击按钮一次选择全部字段
C)两者的作用相同,都是选择一个字段
D)以上说法均错误
30.下面对查询功能的叙述中正确的是()。答案:C
A)在查询中,选择查询可以只选择表中的部分字段,通过选择一个表中的不同字段生成同一个表
B)在查询中,编辑记录主要包括添加记录、修改记录、删除记录和导入、导出记录
C)在查询中,查询不仅可以找到满足条件的记录,而且还可以在建立查询的过程中进行各种统计计算
D)以上说法均不对
31.与SELECT TAB1.* FROM TAB1 WHERE InStr([简历],“篮球”)<>0功能相同的语句是()。答案:C
A)SELECT TAB1.* FROM TAB1 WHERE TAB1.简历 Like “篮球”
B)SELECT TAB1.* FROM TAB1 WHERE TAB1.简历 Like “*篮球”
C)SELECT TAB1.* FROM TAB1 WHERE TAB1.简历 Like “*篮球*”
D)SELECT TAB1.* FROM TAB1 WHERE TAB1.简历 Like “篮球*”
32.在Access 数据库的表设计视图中,不能进行的操作是()。答案:D
A)修改字段类型
B)设置索引
C)增加字段
D)删除记录
33.关于准则 Like![北京,上海,广州],以下满足条件的是()。答案:D
A)北京
B)上海
C)广州
D)杭州
34.现有某查询设计视图(如下图所示),该查询要查找的是()。
答案:A
A)身高在160以上的女性和所有的男性
B)身高在160以上的男性和所有的女性
C)身高在160以上的所有人或男性
D)身高在160以上的所有人
35.Access中,以下不属于查询操作方式的是()。答案:C
A)选择查询
B)参数查询
C)准则查询
D)操作查询
36.“A Or B”准则表达式表示的意思是()。答案:B
A)表示查询表中的记录必须同时满足Or两端的准则A和B,才能进入查询结果集
B)表示查询表中的记录只需满足Or两端的准则A和B中的一个,即可进入查询结果集
C)表示查询表中记录的数据介于A、B之间的记录才能进入查询结果集
D)表示查询表中的记录当满足Or两端的准则A和B不相等时即进入查询结果集
37.若在“tEmployee”表中查找所有姓“王”的记录,可以在查询设计视图的准则行中输入()。答案:B
A)Like “王”
B)Like “王*”
C)=“王”
D)=“王*”
38.在SQL查询中使用WHERE子句指出的是()。答案:D
A)查询目标
B)查询结果
C)查询视图
D)查询条件
39.将表A的记录复制到表B中,且不删除表B中的记录,可以使用的查询是()。答案:C
A)删除查询
B)生成表查询
C)追加查询
D)交叉表查询
40.要将“90分以上学生情况”表中所有记录和“学生成绩查询”中80分以下的记录,显示内容为“学生编号”、“姓名”、“成绩”3个字段。正确的表达式是()。答案:C
A)SELECT学生编号,姓名,成绩FROM学生成绩查询 WHERE 成绩<80
JOIN SELECT学生编号,姓名,成绩FROM 90分以上学生情况
B)SELECT学生编号,姓名,成绩FROM学生成绩查询 WHERE 成绩<80
UNION
SELECT学生编号,成绩,姓名FROM 90分以上学生情况
C)SELECT学生编号,姓名,成绩FROM学生成绩查询 WHERE 成绩<80
NUION
SELECT学生编号,姓名,成绩FROM 90分以上学生情况
D)SELECT学生编号,姓名,成绩FROM学生成绩查询 WHERE 成绩<80
NUION
SELECT学生编号,成绩FROM 90分以上学生情况
41.假设已在Access中建立了包含“书名”、“单价”和“数量”3个字段的“tOfg”表。以该表为数据源创建的窗体中,有一个计算订购总金额的文本框,其控件来源为()。答案:B
A)[单价]*[数量]
B)=[单价]*[数量]
C)[图书订单表]![单价]*[图书订单表]![数量]
D)=[图书订单表]![单价]*[图书订单表]![数量]
第三篇:sql查询练习题含答案
--(1)查询20号部门的所有员工信息。select * from emp e where e.deptno=20;
--(2)查询奖金(COMM)高于工资(SAL)的员工信息。select * from emp where comm>sal;--(3)查询奖金高于工资的20%的员工信息。select * from emp where comm>sal*0.2;--(4)查询10号部门中工种为MANAGER和20号部门中工种为CLERK的员工的信息。select * from emp e
where(e.deptno=10 and e.job='MANAGER')or(e.deptno=20 and e.job='CLERK')--(5)查询所有工种不是MANAGER和CLERK,--且工资大于或等于2000的员工的详细信息。select * from emp
where job not in('MANAGER','CLERK')and sal>=2000;
--(6)查询有奖金的员工的不同工种。select * from emp where comm is not null;--(7)查询所有员工工资和奖金的和。select(e.sal+nvl(e.comm,0))from emp e;--(8)查询没有奖金或奖金低于100的员工信息。select * from emp where comm is null or comm<100;--(9)查询员工工龄大于或等于10年的员工信息。
select * from emp where(sysdate-hiredate)/365>=10;
--(10)查询员工信息,要求以首字母大写的方式显示所有员工的姓名。select initcap(ename)from emp;select upper(substr(ename,1,1))||lower(substr(ename,2))from emp;
--(11)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,--若月份相同则按入职的年份排序。
select ename,to_char(hiredate,'yyyy')year,to_char(hiredate,'MM')month from emp order by month,year;--(12)查询在2月份入职的所有员工信息。select * from emp where to_char(hiredate,'MM')='02'--(13)查询所有员工入职以来的工作期限,用“**年**月**日”的形式表示。
select e.ename,floor((sysdate-e.hiredate)/365)||'年' ||floor(mod((sysdate-e.hiredate),365)/30)||'月' ||floor(mod(mod((sysdate-e.hiredate),365),30))||'日' from emp e;--(14)查询从事同一种工作但不属于同一部门的员工信息。select a.ename,a.job,a.deptno,b.ename,b.job,b.deptno from emp a,emp b where a.job=b.job and a.deptno<>b.deptno;
--(15)查询各个部门的详细信息以及部门人数、部门平均工资。select d.deptno,count(e.empno),avg(e.sal),d.dname,d.loc from emp e ,dept d where e.deptno=d.deptno group by d.deptno,d.dname,d.loc
--(16)查询10号部门员工以及领导的信息。select * from emp where empno in(select mgr from emp where deptno=10)or deptno=10;
--(17)查询工资为某个部门平均工资的员工信息。select * from emp where sal in(select avg(sal)from emp group by deptno);
--(18)查询工资高于本部门平均工资的员工的信息。select * from emp e1
where sal >(select avg(sal)from emp e2 where e2.deptno=e1.deptno);
--(19)查询工资高于本部门平均工资的员工的信息及其部门的平均工资。select e.*,a.avgsal from emp e,(select deptno,avg(sal)as avgsal from emp group by deptno)a where a.deptno=e.deptno and e.sal>a.avgsal;
--(20)统计各个工种的人数与平均工资。
select count(*),e.job,avg(e.sal)from emp e group by e.job
--(21)统计每个部门中各个工种的人数与平均工资。select deptno,job,count(empno),avg(sal)from emp e group by e.deptno,e.job--(22)查询所有员工工资都大于1000的部门的信息。select * from dept where deptno in(select deptno from emp where deptno not in
(select distinct deptno from emp where sal<1000));
--(23)查询所有员工工资都大于1000的部门的信息及其员工信息。select * from emp e join dept d on d.deptno in(select deptno from emp where deptno not in
(select distinct deptno from emp where sal<1000))and d.deptno=e.deptno;
--(24)查询所有员工工资都在900~3000之间的部门的信息。select * from dept where deptno not in(select deptno from emp
where sal not between 900 and 3000);--(25)查询所有工资都在900~3000之间的员工所在部门的员工信息。select * from emp a where a.deptno in(select distinct e.deptno from emp e where e.sal between 900 and 3000);
--(26)查询每个员工的领导所在部门的信息。select d.* from dept d where d.deptno in(select distinct e2.deptno from emp e1,emp e2 where e1.empno=e2.mgr);--(27)查询人数最多的部门信息。select * from dept where deptno in(select deptno from(select count(*)count,deptno from emp group by deptno)where count in(select max(count)
from(select count(*)count ,deptno from emp group by deptno)));
--(28)查询30号部门中工资排序前3名的员工信息。
select * from
(select sal from emp where deptno=30 order by sal desc)e where rownum<4
--(29)查询'JONES'员工及所有其直接、间接下属员工的信息。select e.* from emp e start with ename='JONES' connect by prior empno=mgr;
---(30)查询SCOTT员工及其直接、间接上级员工的信息。select e.* from emp e start with ename='SCOTT' connect by prior mgr=empno;
--(31)以树状结构查询所有员工与领导之间的层次关系。select substr(sys_connect_by_path(ename,'->'),3),level from emp start with mgr is null connect by prior empno=mgr;
--(32)向emp表中插入一条记录,员工号为1357,员工名字为oracle,--工资为2050元,部门号为20,入职日期为2002年5月10日。
--(33)将各部门员工的工资修改为该员工所在部门平均工资加1000。update emp e set sal= 1000+(select avg(sal)from emp where deptno=e.deptno);
--(34)查询工作等级为2级,1985年以后入职的工作地点为DALLAS的员工编号、--姓名和工资。
select e.ename,e.empno,e.sal from emp e,salgrade s,dept d where(e.sal between s.losal and s.hisal)and(s.grade=2)
and to_char(e.hiredate,'yyyy')>1985 and e.deptno=d.deptno and d.loc='DALLAS';
--35.部门平均薪水最高的部门编号
select * from(select avg(sal)avgsal,deptno
from emp group by deptno order by avgsal desc)
where rownum=1;
select deptno,avg(sal)from emp group by deptno having avg(sal)=(select max(avg(sal))avgsal
from emp group by deptno)
--36,部门平均薪水最高的部门名称
select d.* from dept d where deptno in(select deptno from emp group by deptno having avg(sal)=(select max(avg(sal))avgsal
from emp group by deptno))
--37.平均薪水最低的部门的部门名称
select d.* from dept d where deptno in(select deptno from emp group by deptno having avg(sal)=(select min(avg(sal))avgsal
from emp group by deptno))
--38.平均薪水等级最低的部门的部门名称 select d.dname from dept d where d.deptno in(select a.deptno from
(select e.deptno from emp e,salgrade s where(e.sal between s.losal and s.hisal)group by e.deptno order by avg(s.grade))a where rownum=1);
--39.部门经理人中,薪水最低的部门名称 select dname from dept where deptno=(select deptno from
(select deptno from emp where job='MANAGER' group by deptno order by min(sal))where rownum=1)
--40.比普通员工的最高薪水还要高的经理人名称 select ename from emp where sal>(select max(sal)from emp where job not in('MANAGER','PRESIDENT'))and job='MANAGER' or job='PRESIDENT'
--41.删除重复部门,但是留下一项
insert into dept values(70,'RESEARCH','DALLAS')select deptno,dname,rowid from dept
delete from dept d where rowid<>(select min(rowid)from dept where dname=d.dname and d.loc=loc)
--42.更新员工工资为他的主管的工资,奖金
update emp e set sal=(select sal from emp where empno=e.mgr), comm=(select comm from emp where empno=e.mgr)
update emp e set(sal,comm)=(select sal,comm from emp where empno=e.mgr)rollback;select * from emp;
第四篇:Oracle基础练习题及答案(子查询)
子查询
1.查询和scott相同部门的员工姓名ename和雇用日期hiredate select ename,hiredate from emp where deptno=(select b.deptno from emp a,dept b where a.deptno=b.deptno and ename='SCOTT');
2.查询工资比公司平均工资高的所有员工的员工号empno,姓名ename和工资sal。
select empno,ename,sal from emp where sal>(select avg(sal)from emp);
3.查询和姓名中包含字母u的员工在相同部门的员工的员工号empno和姓名ename select empno,ename from emp a,dept b where a.deptno(+)=b.deptno and a.deptno=(select deptno from emp where ename like '%U%');
4.查询在部门的loc为newYork的部门工作的员工的员工姓名ename,部门名称dname和岗位名称job select ename,dname,job from emp a,dept b where a.deptno=b.deptno and loc='NEW YORK';
查询管理者是king的员工姓名ename和工资sal select a.ename,a.sal from emp a,emp b where a.mgr=b.empno and b.ename='KING';
第五篇:查询操作练习题4 - 分组(统计)查询
说明:
根据题目要求编写下列题目的代码,运行代码得出正确结果后把代码复制到题号的下面,最后在文件名前加上学号和姓名(例:2013111055+张三+查询操作练习4-分组查询),并提交文件到教师机。(各数据表参考教材中的教务管理数据库)
1.统计每类职称的教师人数,显示职称和人数。
2.统计每个系教师的人数,显示系名和人数。
3.统计每个系职称为讲师的教师的人数,显示系名和人数。
4.分别统计男女教师的平均基本工资,显示性别和均值。
5.显示平均成绩超过70分的课程号、课程名和平均成绩。