《数据库sql查询语句练习2_习题_结果(单世民)仓库_习题.docx》由会员分享,可在线阅读,更多相关《数据库sql查询语句练习2_习题_结果(单世民)仓库_习题.docx(8页珍藏版)》请在三一办公上搜索。
1、数据库结构如下:仓库(仓库号, 城市, 面积)订购单(职工号, 供应商号, 订购单号, 订购日期)供应商(供应商号, 供应商名, 地址)职工(仓库号, 职工号, 工资)具体数据如下:仓库表:仓库号城市面积WH1北京370WH2上海500WH3广州200WH4武汉400订购单表:职工号供应商号订购单号订购日期E3S7OR6706/23/01E1S4OR7307/28/01E5S4OR7605/25/01E6S6OR7705/26/01E3S4OR7906/13/01E1S2OR8008/29/01E3S3OR9009/01/01E3S3OR9107/13/01供应商表:供应商号供应商名地址S2名
2、硕电子公司苏州S3振华电子厂西安S4华通电子公司北京S6607厂郑州S7爱华电子厂北京职工表:仓库号职工号工资WH2E11220WH1E31210WH2E41250WH3E51230WH1E61250使用SQL语句完成:DDL1. 写出创建上述表的语句命令:create table 仓库(仓库号 varchar(8) primary key, 城市 varchar(8), 面积 int);create table 订购单(订购单号 varchar(8) primary key,职工号 varchar(8), 供应商号 varchar(8), 订购日期 nchar(8)create table
3、供应商(供应商号 varchar(8) primary key, 供应商名 varchar(18), 地址 varchar(8)create table 职工(职工号 varchar(8) primary key,仓库号 varchar(8), 工资 int)DML2. 给出插入上述数据的insert语句命令:insert into 仓库 values(WH1,北京,370)insert into 仓库 values(WH2,上海,500)insert into 仓库 values(WH3,广州,200)insert into 仓库 values(WH4,武汉,400)insert into
4、订购单 values(OR67,E3,S7,06/23/01)insert into 订购单 values(OR73,E1,S4,07/28/01)insert into 订购单 values(OR76,E5,S4,05/25/01)insert into 订购单 values(OR77,E6,S6,05/26/01)insert into 订购单 values(OR79,E3,S4,06/13/01)insert into 订购单 values(OR80,E1,S2,08/29/01)insert into 订购单 values(OR90,E3,S3,09/01/01)insert into
5、 订购单 values(OR91,E3,S7,07/13/01)insert into 供应商 values(S2,名硕电子公司,苏州)insert into 供应商 values(S3,振华电子厂,西安)insert into 供应商 values(S4,华通电子公司,北京)insert into 供应商 values(S6,607厂,郑州)insert into 供应商 values(S7,爱华电子厂,北京)insert into 职工 values(E1,WH2,1220)insert into 职工 values(E3,WH1,1210)insert into 职工 values(E4
6、,WH2,1250)insert into 职工 values(E5,WH3,1230)insert into 职工 values(E6,WH1,1250)单表查询3. 检索职工关系中的所有信息命令:select * from 职工结果: 4. 检索供应商关系中的所有信息命令:select * from 供应商结果:5. 检索六月之后的所有订单命令:SELECT *FROM 订购单 WHERE DATEDIFF(MONTH,2001-06-01 00:00:00.000,订购日期)=0;结果:6. 检索面积大于400的仓库命令:select * from 仓库 where 面积400结果:7.
7、 检索哪些职工的工资多于1210命令:select * from 职工 where 工资1210结果:8. 检索仓库是“WH1”或“WH2”并且面积大于400的城市命令:select 城市 from 仓库 where 仓库号=WH1 and 面积400 union select 城市 from 仓库 where 仓库号=WH2 and 面积400结果:9. 找出仓库面积在400到600的仓库命令:select * from 仓库 where 面积 between 400 and 600结果:10. 找出名中包含 “厂”的所有供应商的名命令:select 供应商名 from 供应商 where
8、供应商名 like %厂%结果:11. 找出不在西安的供应商命令:select * from 供应商 except select * from 供应商 where 地址=西安 或者:select * from 供应商 where not 地址 = 西安结果:12. 找出不在北京的仓库命令:select * from 仓库 except select * from 仓库 where 城市=北京结果:13. 按工资降序排列出所有职工的信息命令:select * from 职工 order by 工资 desc结果:14. 先按仓库号升序排列,再按工资降序排列命令:select * from 职工
9、order by 仓库号 asc ,工资 desc结果:15. 在仓库表中统计一下有几个仓库命令:select COUNT(*) 仓库数 from 仓库结果:16. 在职工表中统计一下有几个仓库命令:select COUNT(distinct 仓库号) 仓库数 from 职工结果:17. 求总的仓库面积命令:select sum(面积) 总面积 from 仓库结果:聚合查询18. 每个职工的订单数命令:select 职工号,count(*) 订单数 from 订购单 group by 职工号结果:19. 订单数大于3的职工命令:select 职工号,COUNT(*) 订单数 from 订购单
10、group by 职工号 having COUNT(*)3结果: 多表查询20. 找出在面积大于400的仓库中工作的职工命令:select 职工号 from 职工 join 仓库 on 职工.仓库号=仓库.仓库号 where 面积400结果:21. 找出在北京工作的职工和他们的工资情况命令:select 职工号,工资 from 职工 join 仓库 on 职工.仓库号=仓库.仓库号 where 仓库.城市=北京结果:22. 找出工资大于1215的职工和他们所在的城市命令:select 职工号,城市 from 职工 join 仓库 on 职工.仓库号=仓库.仓库号 where 工资1215 结果
11、: 子查询23. 哪些城市至少有一个订单(从仓库角度考虑)命令:select distinct 城市 from 订购单 join 职工 on 订购单.职工号=职工.职工号 join 仓库 on 职工.仓库号=仓库.仓库号结果:24. 找出没有任何订单的城市命令:select 城市 from 仓库 except select distinct 城市 from 订购单 join 职工 on 订购单.职工号=职工.职工号 join 仓库 on 职工.仓库号=仓库.仓库号结果:25. 找出和E4有同样工资的所有职工命令:select b.职工号,b.仓库号,b.工资 from 职工 a join 职工
12、 b on a.工资=b.工资 where a.职工号=E4结果:26. 找出仓库面积大于400的仓库的所有职工命令:select 职工.职工号,职工.仓库号,职工.工资 from 职工 join 仓库 on 职工.仓库号=仓库.仓库号 where 面积400结果:27. 找出供应商在西安的职工和他们的工资情况命令:select 职工.职工号,工资 from 供应商 join 订购单 on 供应商.供应商号=订购单.供应商号 join 职工 on 订购单.职工号=职工.职工号 where 地址=西安结果:28. 找出不在北京仓库里工作的职工命令:select 职工号,工资 from 职工 jo
13、in 仓库 on 职工.仓库号=仓库.仓库号 except select 职工号,工资 from 职工 join 仓库 on 职工.仓库号=仓库.仓库号 where 城市=北京结果:29. 找出在北京仓库里工作的职工命令:select 职工号,工资 from 职工 join 仓库 on 职工.仓库号=仓库.仓库号 where 城市=北京结果:30. 求广州和上海仓库职工的总工资命令:select SUM(工资) 总工资 from 职工 join 仓库 on 职工.仓库号=仓库.仓库号 where 城市=广州 or 城市=上海结果:31. 求所有职工工资都大于1210的仓库的平均面积命令:select avg(面积) 平均面积 from (select 仓库号 from 职工 except select 仓库号 from 职工 where 工资=2) a结果: