国开《数据库基础与应用》第四章 4-4-4:多表查询举例
4-4-4:多表查询举例
多表查询就是在一次查询中涉及到多个基本表或视图,每个基本表或视图都需要在FROM选项中列出,它们之间用逗号分开。
例5:从商品表1和商品表2中查询出按商品代号进行自然连接的结果。
create table 商品表2(
商品代号 char(8) primary key,
产地 char(6),
品牌 char(6),
foreign key(商品代号) references 商品表1(商品代号)
)
假定商品表2的内容如下所示:
商品代号 | 产地 | 品牌 |
DBX-134 | 北京 | 雪花 |
DSJ-120 | 南京 | 熊猫 |
DSJ-180 | 南京 | 熊猫 |
DSJ-340 | 北京 | 牡丹 |
KTQ-12 | 无锡 | 春兰 |
WBL-6 | 青岛 | 海信 |
XYJ-13 | 无锡 | 小天鹅 |
XYJ-20 | 山西 | 海棠 |
按照题目要求,要从商品表1和商品表2中查询出按商品代号进行自然连接的结果。得到的查询语句如下:
select 商品表1.*,产地,品牌
from 商品表1,商品表2
where 商品表1.商品代号=商品表2.商品代号
此语句执行后的查询结果如下:
商品代号 | 分类名 | 单价 | 数量 | 产地 | 品牌 |
DBX-134 | 电冰箱 | 3456.0 | 8 | 北京 | 雪花 |
DSJ-120 | 电视机 | 3865.0 | 15 | 南京 | 熊猫 |
DSJ-180 | 电视机 | 4073.0 | 10 | 南京 | 熊猫 |
DSJ-340 | 电视机 | 5726.0 | 5 | 北京 | 牡丹 |
KTQ-12 | 空调器 | 2800.0 | 12/td> | 无锡 | 春兰 |
WBL-6 | 微波炉 | 640.0 | 10 | 青岛 | 海信 |
XYJ-13 | 洗衣机 | 1468.0 | 20 | 无锡 | 小天鹅 |
XYJ-20 | 洗衣机 | 1873.0 | 12 | 山西 | 海棠 |
也可以把连接条件放到FROM选项中,如下所示。
select 商品表1.*,产地,品牌
from 商品表1 inner join 商品表2 on 商品表1.商品代号=商品表2.商品代号
例6:要求从商品库中查询出单价大于等于4000元的所有商品的商品代号、单价和产地。
select 商品表1.商品代号,单价,产地
from 商品表1 inner join 商品表2 on 商品表1.商品代号=商品表2.商品代号
where 单价>=4000
执行这个查询时得到的显示结果如下:
商品代号 | 单价 | 产地 |
DSJ-180 | 4073.0 | 南京 |
DSJ-340 | 5726.0 | 北京 |