二级查询练习题答案(分类)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注:蓝色字体说明是第二种做法。
一、基本查询
例1 从职工关系中检索所有工资值。
Select 工资from 职工表
例2 检索仓库关系中的所有元组。
Select * from 仓库表
二、条件查询
例3 检索工资多于1230元的职工号。
Select 职工号from 职工表where 工资>1230
例4 检索哪些仓库有工资多于1210的职工。
Select distinct仓库号from 职工表where 工资>1210
例5 给出在仓库“WH1”或“WH2”工作,并且工资少于1250的职工号。
做法1:Select 职工号from 职工表;
where 工资<1250 and (仓库号="WH1" or 仓库号="WH2")
做法2:Select 职工号from 职工表where 工资<1250 and 仓库号in ("WH1","WH2") 例6 找出工资多于1230元的职工号和他们所在的城市。
select 职工号,城市;
from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号and 工资>1230
例7 检索出工资在1220元到1240元范围内的职工信息。
做法1:select * from 职工表where 工资between 1220 and 1240
做法2:select * from 职工表where 工资>=1220 and 工资<= 1240 例8 从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息。
做法1:select * from 供应商表where 供应商名like "%公司"
做法2:select * from 供应商表where "公司" $ 供应商名
例9 找出不在北京的全部供应商信息。
select * from 供应商表where 地址<>"北京"
例10 找出尚未确定供应商的订购单。
select 订购单号from 订购单表where 供应商号is null
例11 列出已经确定了供应商的订购单信息。
select * from 订购单表where 供应商号is not null
三、多表查询
例12 找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。
select 职工号,城市;
from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号and 面积>400
例13 哪些城市至少有一个仓库的职工工资为1250元?
select 城市from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号and 工资=1250
例14 查询所有职工的工资都多于1210元的仓库的信息。
select 仓库表.*;
from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号;
group by 职工表.仓库号having min(工资)>1210
例15 求北京和上海的仓库职工的工资总和。
select sum(工资) as 总和from 职工表,仓库表;
where 职工表.仓库号=仓库表.仓库号and 城市in ("北京","上海")
四、嵌套查询
例16 哪些城市至少有一个仓库的职工工资为1250元?
方法1:
select 城市from 仓库表,职工表;
where 仓库表.仓库号= 职工表.仓库号AND工资=1250
方法2:
select 城市from 仓库表where 仓库号in;
(select 仓库号from 职工表where 工资=1250)
方法2:
SELECT 仓库表.城市;
FROM 查询练习!仓库表INNER JOIN 查询练习!职工表;
ON 仓库表.仓库号= 职工表.仓库号;
WHERE 职工表.工资= 1250
例17 查询所有职工的工资都多于1210元的仓库的信息。
select * from 仓库表;
where 仓库号in ;
(select 仓库号from 职工表group by 仓库号having min(工资)>1210) 例18 找出和职工E4挣同样工资的所有职工。
select 职工号from 职工表where 工资=;
(select 工资from 职工表where 职工号="E4") and 职工号<>"E4"
例19 求北京和上海的仓库职工的工资总和。
方法1: select sum(工资) as 总和from 职工表;
where 仓库号in (select 仓库号from 仓库表where 城市in ("北京","上海")) 方法2: select sum(工资) as 总和from 职工表, 仓库表;
where 职工表.仓库号= 仓库表.仓库号AND城市in ("北京","上海") 方法3: SELECT SUM(职工表.工资) AS 工资总和;
FROM 查询练习!仓库表INNER JOIN 查询练习!职工表;
ON 仓库表.仓库号= 职工表.仓库号;
WHERE 仓库表.城市IN ("北京","上海")
例20 求所有职工的工资都多于1210元的仓库的平均面积。
select avg(面积) from 仓库表where 仓库号in ;
(select 仓库号from 职工表group by 仓库号having min(工资)>1210) 例21 检索那些仓库中还没有职工的仓库的信息。
select * from 仓库表where 仓库号not in (select 仓库号from 职工表) 例22 检索那些仓库中至少已经有一个职工的仓库的信息。
select * from 仓库表where 仓库号in (select 仓库号from 职工表) 例23 检索所有职工的工资大于或等于WH1仓库中任何一名职工工资的仓库号。
方法1:select 仓库号from 职工表where 工资>= any;
(select 工资from 职工表where 仓库号="WH1") and 仓库号<>"WH1" distinct 方法2:select 仓库号from 职工表where 工资>= ;
(select min(工资)from 职工表where 仓库号="WH1") and 仓库号<>"WH1" distinct 例24 检索所有职工的工资大于或等于WH1仓库中所有职工工资的仓库号。
方法1: select 仓库号from 职工表where 工资>= all;
(select 工资from 职工表where 仓库号="WH1") and 仓库号<>"WH1" distinct 方法2: select 仓库号from 职工表where 工资>= ;
(select max(工资) from 职工表where 仓库号="WH1") and 仓库号<>"WH1" distinct
五、统计和分组统计
例25 找出供应商所在地的数目。
select count(distinct 地址) from 供应商表
例26 求支付的工资总数。