目标达成
1、掌握多表连接查询
1、
2、
3、
4、
5、
6、
7、
8、
9、
2、掌握表格别名的应用
3、熟练UNION合并
10、
查询
4、熟练嵌套查询
实训内容
导入实验自带的sales数据库,执行以下操作,记录相应的内容(1-4是多表连接查询):
供应表 职工表
仓库表 订购单表
基于上述的4个表,完成下列操作(第10-12选做,不做检查内容):
1、找出工作在面积大于400的仓库的职工号以及这些职工工作的城市。
或者使用先前的方法:
select 职工号,城市
from 职工join 仓库
On 职工.仓库号=仓库.仓库号
where 仓库.面积> 400
2、针对仓库和职工两个关系表,查询仓库号,城市,面积,职工号,工资,要求结果包含仓库表的全部。
select 仓库.仓库号,城市,面积,职工号,工资
from 职工right join 仓库
On 职工.仓库号=仓库.仓库号
3、针对仓库和职工两个关系表,查询仓库号,城市,面积,职工号,工资,要求结果包含职工表的全部,不满足条件的将以NULL显示。
select 职工.仓库号,城市,面积,职工号,工资
from 职工left join 仓库
On 职工.仓库号=仓库.仓库号
4、针对仓库和职工两个关系表,查询两表的所有纪录。(另一个表满足连接条件的返回相应的值,不满足连接条件的返回NULL)
select 职工.仓库号,城市,面积,职工号,工资,仓库.仓库号
from 职工full join 仓库
On 职工.仓库号=仓库.仓库号
5、查询哪些城市至少有一个仓库的职工的工资为1250元?
select 城市
from 仓库
where 仓库号in (select 仓库号from 职工where 工资= 1250 )
6、查询出和职工E4挣同样工资的所有职工。
select 职工号
from 职工
where 工资=(select 工资from 职工where 职工号='E4' )
7、检索有职工的工资大于或等于WH1仓库中任何一名职工的工资的仓库号。
select 仓库号
from 仓库
where 仓库号in (select 仓库号from 职工where 工资>= any(select 工资from 职工where 仓库号='WH1'))
8、检索有职工的工资大于或等于WH1仓库中所有职工的工资的仓库号。
select 仓库号
from 仓库
where 仓库号in (select 仓库号from 职工where 工资>= (select max(工资) from 职工where 仓库号='WH1'))
9、检索哪些仓库中至少已经有一个职工的仓库的信息。
select *
from 仓库
where 仓库号in (
select 仓库号
from 职工
where 职工号is not null )
10.检索出与工资在1220元以下的职工没有联系的供应商的名称。
select 供应商名
from 供应
where 供应商号in (select 供应商号from 订购单where 职工号in (select 职工号from 职工where 工资< 1220))
11.删除由在上海仓库工作的职工发出的所有订购单。
Delete from 订购单
Where 定单单号in (
select 定单单号
from 订购单
where 职工号in (select 职工号from 职工where 仓库号in (select 仓库号from 仓库where 城市= '上海')))
12.删除目前没有任何订购单的供应商。
Delete from 订购单
Where 供应商号in (
select 供应商号
from 订购单
where 供应商号is null )
select 职工号,城市
from 职工join 仓库
On 职工.仓库号= 仓库.仓库号
where 仓库.面积> 400
select 仓库.仓库号,城市,面积,职工号,工资
from 职工right join 仓库
On 职工.仓库号=仓库.仓库号
select 职工.仓库号,城市,面积,职工号,工资
from 职工left join 仓库
On 职工.仓库号= 仓库.仓库号
select 职工.仓库号,城市,面积,职工号,工资,仓库.仓库号
from 职工full join 仓库
On 职工.仓库号=仓库.仓库号
select 城市
from 仓库
where 仓库号in (select 仓库号from 职工where 工资= 1250 )
select 职工号
from 职工
where 工资=(select 工资from 职工where 职工号='E4' )
select 仓库号
from 仓库
where 仓库号in (select 仓库号from 职工where 工资>= any(select 工资from 职工where 仓库号='WH1'))
select 仓库号
from 仓库
where 仓库号in (select 仓库号from 职工where 工资>= (select max(工资) from 职工where 仓库号='WH1'))
select *
from 仓库
where 仓库号in (
select 仓库号
from 职工
where 职工号is not null )
select 供应商名
from 供应
where 供应商号in (select 供应商号from 订购单where 职工号in (select 职工号from 职工where 工资< 1220))
Delete from 订购单
Where 定单单号in (
select 定单单号
from 订购单
where 职工号in (select 职工号from 职工where 仓库号in (select 仓库号from 仓库where 城市= '上海')))
Delete from 订购单
Where 供应商号in (
select 供应商号
from 订购单
where 供应商号is null )下载本文