|

一、 设有一个订货管理数据库,其中有仓库表、职工表、订购单表、供货商表如下所示:
仓库表(仓库号,城市,面积)
职工表(仓库号,职工号,工资)
订购单表(职工号,供应商号,订购单号,订购日期)
供应商表(供应商号,供应商名,城市)
请用SQL语句完成如下操作(1-12每题3分,13题4分,共40分)。:
1、 从职工关系中检索所有工资值,要求结果中没有重复值。
2、 检索工资多于1230元的职工号和他们所在的城市。
3、 检索工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。
4、 检索出哪些城市至少有一个仓库的职工工资为1250元
5、 检索所有职工的工资都多于1210元的仓库的信息。
6、 先按仓库号升序排序,再按工资降序排序并输出全部职工信息。
7、 求北京和上海的仓库职工的工资总和。
8、 求在wh2仓库工作的职工的最高工资值。
9、 求至少有两个职工的每个仓库的平均工资。
10、 检索出不在北京的全部供应商信息。
11、 列出每个职工经手的具有最高总金额的订购单信息。
12、 检索哪些仓库中还没有职工的仓库的信息。
13、 检索有职工的工资大于或等于wh1仓库中任何一名职工工资的仓库号
sql代码:
- use master
- --删除数据库
- if exists (select * from sysdatabases where name='订货管理')
- DROP database 订货管理
- GO
- --创建数据库
- CREATE DATABASE 订货管理
- GO
- --切换数据库
- USE 订货管理
- Go
- --1/创建仓库表(仓库号,城市,面积)
- create table 仓库表
- (
- 仓库号 char(4) primary key,
- 城市 varchar(4) not null,
- 面积 int
- )
- go
- --2/创建供应商表(供应商号,供应商名,城市)
- create table 供应商表
- (
- 供应商号 char(2) primary key,
- 供应商名 char(2),
- 城市 varchar(10)
- )
- Go
- --3/创建职工表(仓库号,职工号,工资)
- create table 职工表
- (
- 仓库号 char(4) not null references 仓库表(仓库号),
- 职工号 char(2) primary key,
- 工资 int
- )
- Go
- --4/创建订购单表(职工号,供应商号,订购单号,订购日期)
- create table 订购单表
- (
- 职工号 char(2) not null references 职工表(职工号),
- 供应商号 char(2) references 供应商表(供应商号),
- 订购单号 char(2) primary key,
- 订购日期 datetime
- )
- Go
- --1、 从职工关系中检索所有工资值,要求结果中没有重复值。
- select 职工号,工资 from 职工表
- --2、 检索工资多于1230元的职工号和他们所在的城市。
- select 城市,职工号 from 仓库表
- inner join 职工表 on 仓库表.仓库号=职工表.仓库号
- where 工资>1230
- --3、 检索工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。
- select 职工号,城市 from 职工表
- inner join 仓库表 on 职工表.仓库号=仓库表.仓库号
- where 面积>400
- --4、 检索出哪些城市至少有一个仓库的职工工资为1250元
- select 城市 from 仓库表 where 仓库号 in
- (select 仓库号 from 职工表 where 工资=1250)
- --5、 检索所有职工的工资都多于1210元的仓库的信息。
- select * from 仓库表 where 仓库号 in
- (select 仓库号 from 职工表 where 工资>=1210)
- --6、 先按仓库号升序排序,再按工资降序排序并输出全部职工信息。
- select * from 职工表 order by 仓库号,工资 DESC
- --7、 求北京和上海的仓库职工的工资总和。
- select sum(工资) from 职工表 where 仓库号 in
- (select 仓库号 from 仓库表 where 城市='北京' or 城市='上海')
- --8、 求在wh2仓库工作的职工的最高工资值。
- select MAX(工资) from 职工表 where 仓库号='wh2'
- --9、 求至少有两个职工的每个仓库的平均工资。
- select 仓库号,AVG(工资) as 职工平均工资 from 职工表
- group by 仓库号
- having COUNT(职工号)>=2
- --10、 检索出不在北京的全部供应商信息。
- select * from 供应商表 where 城市<>'北京'
- --11、 列出每个职工经手的具有最高总金额的订购单信息。
- --12、 检索哪些仓库中还没有职工的仓库的信息。
- select * from 仓库表 where 仓库号 in
- (select 仓库号 from 仓库表
- Except
- select 仓库号 from 职工表)
- --13、 检索有职工的工资大于或等于wh1仓库中任何一名职工工资的仓库号
- select distinct 仓库号 from 职工表
- where 工资 >= (select min(工资) from 职工表 where 仓库号='wh1')
复制代码
|
上一篇:我知道我们学校绘画高手多的很,只不过他们都不逛这个论坛,所以我就随便发点我的画吧下一篇:asp.net如何让所有控件都剧中显示?
|