0606mysql查询联系
仓库表加练习题
表(一)worker职工表
属性名 |
数据类型 |
可否为空 |
含 义 |
Work_id |
varchar (20) |
否 |
职工号(主码) |
Ware_id |
varchar (20) |
否 |
仓库号(外码) |
wages |
varchar (20) |
否 |
工资 |
表(二)warehouse(仓库表)
属性名 |
数据类型 |
可否为空 |
含 义 |
Ware_id |
varchar (20) |
否 |
仓库号(主码) |
city |
varchar (20) |
否 |
城市 |
area |
varchar (20) |
否 |
面积 |
表(三) 表表(三)order(订单表)
属性名 |
数据类型 |
可否为空 |
含 义 |
Work_id |
varchar (20) |
否 |
职工号(外码) |
supp_id |
varchar (20) |
否 |
供应商号(外码) |
Order_id |
varchar (20) |
可 |
订购单号 |
主码:Work_id+ supp_id |
表(四)supply(供应商表)
属性名 |
数据类型 |
可否为空 |
含 义 |
supp_id |
varchar (20) |
否 |
供应商号(主码) |
supp_name |
varchar (20) |
否 |
供应商名 |
supp_area |
varchar (20) |
否 |
地址 |
–1.从职工关系中检索所有工资值。
select wages from worker
–2.检索仓库关系中的所有记录。
select * from warehouse
–3.检索工资多于1230元的职工号。
select work_id from worker where wages > 1230
–4.检索哪些仓库有工资多于1210元的职工。
select distinct ware_id from worker where wages > 1210
–5.给出在仓库“wh1”或“wh2”工作,并且工资少于1250元的职工号。
select work_id from worker where wages < 1250 and ware_id in (‘wh1′,’wh2’)
–6.找出工资多于1230元的职工号和他们所在的城市。
select work_id,city from worker natural join warehouse on wages > 1230
–7.找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。
select work_id,city from worker natural join warehouse where area > 400;
–★8.哪些城市至少有一个仓库的职工工资为1250元。
select distinct city from warehouse natural join worker where wages = 1250
–9.查询所有职工的工资都多于1210元的仓库的信息。
select distinct a.* from warehouse as a natural join worker where ware_id not in (select ware_id from worker where wages <=1210);
select * from warehouse where ware_id in (select ware_id from worker where ware_id not in (select ware_id from worker where wages <=1210))
–10.找出和职工e4挣同样工资的所有职工。
select work_id from worker where wages = (select wages from worker where work_id = ‘e4’) and work_id != ‘e4’
–11.检索出工资在1220元到1240元范围内的职工信息。
select * from worker where wages between 1220 and 1240
–★12.从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息。
select * from supply where supp_name like ‘%公司’
–13.找出不在北京的全部供应商信息。
select * from supply where supp_area != ‘北京’
–14.按职工的工资值升序检索出全部职工信息。
select * from worker order by wages
–15.先按仓库号排序,再按工资排序并输出全部职工信息。
select * from worker order by ware_id,wages
–16.找出供应商所在地的数目
select count(distinct supp_area) from supply
–17.求支付的工资总数。
select sum(wages) from worker
–18.求北京和上海的仓库职工的工资总和。
select sum(wages) from worker where ware_id in (select ware_id from warehouse where city in (‘上海’,’北京’))
–19.求所有职工的工资都多于1210元的仓库的平均面积。
select avg(area) from warehouse where ware_id in (select ware_id from worker where ware_id not in (select ware_id from worker where wages <=1210))
–20.求在wh2仓库工作的职工的最高工资值。
select max(wages) from worker where ware_id = ‘wh2’
–21.求每个仓库的职工的平均工资。
select ware_id,avg(wages) from worker group by ware_id
–22.求至少有两个职工的每个仓库的平均工资。
select ware_id,avg(wages) from worker group by ware_id having count(*)>1
–23.找出尚未确定供应商的订购单。
select * from orders where supp_id = ”
–24.列出已经确定了供应商的订购单信息。
select * from orders where supp_id != ”
–25.查询供应商名。
select supp_name from supply where supp_name !=”
–★26.在订购单表中加入一个新字段总金额,说明完成该订购单所应付出的总金额数。
alter table orders add money varchar(20)not null
–27.列出每个职工经手的具有最高总金额的订购单信息。
select * from orders group by work_id
–28.检索哪些仓库中还没有职工的仓库的信息。
select * from warehouse where ware_id not in(select ware_id from worker)
–29.检索哪些仓库中至少已经有一个职工的仓库的信息。
select * from warehouse where ware_id in(select ware_id from worker)
–★30.检索有职工的工资大于或等于wh1仓库中任何一名职工工资的仓库号。
select distinct ware_id from worker where wages >= any(select wages from worker where ware_id = ‘wh1’) and ware_id != ‘wh1’
–★31.检索有职工的工资大于或等于wh1仓库中所有职工工资的仓库号。
select distinct ware_id from worker where wages >= (select max(wages) from worker where ware_id = ‘wh1’) and ware_id != ‘wh1’