• 2025年8月19日 星期二

H21102D-实验5-数据查询的操作(二)

11 月 6, 2022

一、实验目的

通过本实验,使读者学会SQL语言SELECT语句的查询操作,熟练掌握两个或两个以上的表的基本的连接操作,区分内连接与外连接的特点,学会应用自连接进行查询,会给表命别名。

二、实验仪器设备、试剂或材料

使用SQL Server 2008软件进行实验操作。

三、实验要求

    创建一个名为lianxi2的数据库,在该数据库中导入仓库表、职工表、订购表和供应商表,并完成指定的查询操作,熟练掌握两个以上的表的内连接查询、左连接查询、右连接查询、外连接查询。

四、实验内容与步骤

1、创建仓库表

2、创建职工表

3、创建订购表

4、创建供应商表

上述四个表可以在文末下载。

5、用SQL语句完成以下查询

(1)、查询每个城市的仓库总面积;如图1所示。

select [城市],sum([面积(㎡)]) as"总面积" from [仓库表] group by [城市]

图1

(2)、查询每个仓库的职工人数,如果该仓库没有职工,也要列出人数为0(用左外连接实现);如图2所示。

select [仓库表].仓库号,count([职工号])as"职工人数", sum([面积(㎡)]) as"总面积"

from [仓库表] left join [职工表] on  [仓库表].仓库号=[职工表].仓库号

group by

[仓库表].仓库号

图2

(3)、查询在上海工作的职工有多少个;如图3所示。

select count(职工号) as "在上海工作的职工人数"

from 仓库表 join 职工表 on 仓库表.[仓库号]=职工表.[仓库号]

where [城市]='上海'

图3

(4)、查询哪些职工在上海工作,列出他们的职工号、仓库号;如图4所示。

select 职工号,[仓库表].仓库号

from 仓库表 join 职工表 on 仓库表.[仓库号]=职工表.[仓库号]

where [城市]='上海'

图4

(5)、查询与E3号职工有订购业务联系的供应商、供应商号;如图5所示。

select 供应商表.供应商号,供应商名

from 订购表 join 供应商表 on 订购表.[供应商号]=供应商表.[供应商号]

where [职工号]='E3'

图5

(6)、查询哪些职工与爱华电子厂有订购业务联系,列出他们的职工号、仓库号;如图6所示。

select 职工表.职工号,仓库号

from 订购表 join 供应商表 on 订购表.[供应商号]=供应商表.[供应商号]

join 职工表 on 订购表.职工号=职工表.职工号

where [供应商名]='爱华电子厂'

图6

(7)、查询每个供应商的订购单数量,列出供应商号和他们的订购单数量;如图7所示。

select 供应商表.供应商号,count(*) as"订购单数量"

from 订购表 join 供应商表 on 订购表.[供应商号]=供应商表.[供应商号]

group by 供应商表.供应商号

图7

(8)、查询月工资在3000元以上,并在北京或上海工作的职工,列出他们的职工号和月工资;如图8所示。

select 职工表.职工号,职工表.[月工资(元)]

from 职工表 join 仓库表 on 仓库表.仓库号=职工表.仓库号

where(城市='上海'or 城市='北京') and [月工资(元)]>3000

图8

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

select 职工表.职工号,订购单号,仓库表.仓库号,城市

from 订购表 join 供应商表 on 订购表.供应商号=供应商表.供应商号

join 职工表 on 订购表.职工号=职工表.职工号

join 仓库表 on 仓库表.仓库号=职工表.仓库号

where 供应商表.供应商号='S3'

图9

(10)、查询出哪些仓库没有分配职工,列出对应的仓库号;如图10所示。

select 仓库表.仓库号

from 仓库表 left join 职工表 on 仓库表.仓库号=职工表.仓库号

where 职工表.职工号 is null

图10

(11)、查询出哪些职工的工资高于全体职工平均工资,列出职工号、仓库号、月工资;如图11所示。

select 职工号,仓库号,[月工资(元)]

from  职工表

where [月工资(元)]>(select AVG([月工资(元)])from 职工表)

图11

(12)、查询出哪些职工的工资高于他所在仓库的职工的平均工资,列出职工号、仓库号、月工资。如图12所示。

select 职工号,仓库号,[月工资(元)]

from  职工表 S1

where [月工资(元)]>(select AVG([月工资(元)])from 职工表 S2 where S1.仓库号=S2.仓库号)

图12

五、实验结果与分析

通过本实验,学会SQL语言SELECT语句的查询操作,熟练掌握两个或两个以上的表的基本的连接操作,区分内连接与外连接的特点,学会自连接查询,会给表命别名。

六、结论与体会

  掌握两个或两个以上的表的基本的连接操作,区分内连接与外连接的特点,自连接查询和给表命别名。

七、教师评语

重要提示

本实验用到的数据库(点击即可下载):

Avatar photo

李星海

简介: 2025-今 浙江农林大学 | 2022-今 广州白蓝碗蛋科技有限公司 | 2022-2024 广州商学院 | 2019-2022 广东工贸职业技术学院 | 服务宗旨:心始至客,行亦致远。