一、实验目的
通过本实验,使读者学会SQL语言SELECT语句的查询操作,熟练掌握两个或两个以上的表的基本的连接操作,区分内连接与外连接的特点,学会应用自连接进行查询,会给表命别名。
二、实验仪器设备、试剂或材料
使用SQL Server 2008软件进行实验操作。
三、实验要求
创建一个名为lianxi2的数据库,在该数据库中导入仓库表、职工表、订购表和供应商表,并完成指定的查询操作,熟练掌握两个以上的表的内连接查询、左连接查询、右连接查询、外连接查询。
四、实验内容与步骤
1、创建仓库表
2、创建职工表
3、创建订购表
4、创建供应商表
上述四个表可以在文末下载。
5、用SQL语句完成以下查询
(1)、查询每个城市的仓库总面积;如图1所示。
select [城市],sum([面积(㎡)]) as"总面积"
from [仓库表] group by [城市]

(2)、查询每个仓库的职工人数,如果该仓库没有职工,也要列出人数为0(用左外连接实现);如图2所示。
select [仓库表].仓库号,count([职工号])as"职工人数", sum([面积(㎡)]) as"总面积"
from [仓库表] left join [职工表] on [仓库表].仓库号=[职工表].仓库号
group by
[仓库表].仓库号

(3)、查询在上海工作的职工有多少个;如图3所示。
select count(职工号) as "在上海工作的职工人数"
from 仓库表 join 职工表 on 仓库表.[仓库号]=职工表.[仓库号]
where [城市]='上海'

(4)、查询哪些职工在上海工作,列出他们的职工号、仓库号;如图4所示。
select 职工号,[仓库表].仓库号
from 仓库表 join 职工表 on 仓库表.[仓库号]=职工表.[仓库号]
where [城市]='上海'

(5)、查询与E3号职工有订购业务联系的供应商、供应商号;如图5所示。
select 供应商表.供应商号,供应商名
from 订购表 join 供应商表 on 订购表.[供应商号]=供应商表.[供应商号]
where [职工号]='E3'

(6)、查询哪些职工与爱华电子厂有订购业务联系,列出他们的职工号、仓库号;如图6所示。
select 职工表.职工号,仓库号
from 订购表 join 供应商表 on 订购表.[供应商号]=供应商表.[供应商号]
join 职工表 on 订购表.职工号=职工表.职工号
where [供应商名]='爱华电子厂'

(7)、查询每个供应商的订购单数量,列出供应商号和他们的订购单数量;如图7所示。
select 供应商表.供应商号,count(*) as"订购单数量"
from 订购表 join 供应商表 on 订购表.[供应商号]=供应商表.[供应商号]
group by 供应商表.供应商号

(8)、查询月工资在3000元以上,并在北京或上海工作的职工,列出他们的职工号和月工资;如图8所示。
select 职工表.职工号,职工表.[月工资(元)]
from 职工表 join 仓库表 on 仓库表.仓库号=职工表.仓库号
where(城市='上海'or 城市='北京') and [月工资(元)]>3000

(9)、查询与供应商号为S3的供应商有业务联系的职工,求出这些职工的职工号、订购单号、仓库号、城市;如图9所示。
select 职工表.职工号,订购单号,仓库表.仓库号,城市
from 订购表 join 供应商表 on 订购表.供应商号=供应商表.供应商号
join 职工表 on 订购表.职工号=职工表.职工号
join 仓库表 on 仓库表.仓库号=职工表.仓库号
where 供应商表.供应商号='S3'

(10)、查询出哪些仓库没有分配职工,列出对应的仓库号;如图10所示。
select 仓库表.仓库号
from 仓库表 left join 职工表 on 仓库表.仓库号=职工表.仓库号
where 职工表.职工号 is null

(11)、查询出哪些职工的工资高于全体职工平均工资,列出职工号、仓库号、月工资;如图11所示。
select 职工号,仓库号,[月工资(元)]
from 职工表
where [月工资(元)]>(select AVG([月工资(元)])from 职工表)

(12)、查询出哪些职工的工资高于他所在仓库的职工的平均工资,列出职工号、仓库号、月工资。如图12所示。
select 职工号,仓库号,[月工资(元)]
from 职工表 S1
where [月工资(元)]>(select AVG([月工资(元)])from 职工表 S2 where S1.仓库号=S2.仓库号)

五、实验结果与分析
通过本实验,学会SQL语言SELECT语句的查询操作,熟练掌握两个或两个以上的表的基本的连接操作,区分内连接与外连接的特点,学会自连接查询,会给表命别名。
六、结论与体会
掌握两个或两个以上的表的基本的连接操作,区分内连接与外连接的特点,自连接查询和给表命别名。
七、教师评语
重要提示
本实验用到的数据库(点击即可下载):