利用SQL的联接从多个表格中获取数据
作者: cyw, 出处:IT专家网, 责任编辑: 李书琴,
2007-10-24 11:05
本文主要为大家介绍使用联接语法从多个表格中获取数据的技巧……
【IT专家网独家】第一节:联接简介
在本文中,我们以虚构的ABC公司为实例样本。ABC公司利用一个Oracle数据库来追踪其车队及其各机构间驾驶员的动向。公司安排了某些雇员驾驶卡车,另一些雇员驾驶小汽车。首先花一点时间阅读下面的两个从公司的车辆管理数据库上下载的表格:
表 Drivers
|
licensenum |
lastname |
firstname |
location |
class |
|
13232 |
白 |
罗兰 |
北京 |
小汽车 |
|
18431 |
苏 |
麦 |
上海 |
卡车 |
|
41948 |
杨 |
兰 |
广州 |
小汽车 |
|
81231 |
罗 |
杰 |
西安 |
小汽车 |
表 Vehicles
|
tag |
location |
class |
|
D824HA |
上海 |
卡车 |
|
H122JM |
北京 |
小汽车 |
|
J291QR |
广州 |
小汽车 |
|
L990MT |
广州 |
卡车 |
|
P091YF |
上海 |
小汽车 |
我们可以用简单的SELECT语句来回答很多问题,例如:
- 哪些驾驶员在纽约?
- 每个城市各有多少辆小汽车?
- 有哪些驾驶员被分配到上海开货车?
- 在实际应用中,常常要求从多个数据表中合并数据。我们的车辆管理员可能会要求我们向他们递交以下的信息:
- 在一个表内列出所有车辆/驾驶员配对的信息,不需要重新调用单个车辆列表或驾驶员列表
- 被批准在上海驾驶车辆的所有驾驶员列表
当然,用很多子查询执行复杂的SELECT语句也能够完成这些要求。不过,这里为大家提供一个更加简单的方法——内部联接和外部联接。
第二节:内部联接(等值联接)
内部联接(也称为等值联接)用来合并两个或更多数据表的信息。联接条件由WHERE子句来定义,以确定哪些记录是可以相匹配的。例如,我们可以建立一个驾驶员和车辆配对的列表,其中车辆和驾驶员位于同一个城市。执行以下的SQL查询可以完成这项任务:
| SELECT lastname, firstname, tag FROM drivers, vehicles WHERE drivers.location = vehicles.location |
查询返回结果如下:
lastname firstname tag
-------- --------- ---
白 罗兰 H122JM
苏 麦 D824HA
苏 麦 P091YF
杨 兰 J291QR
杨 兰 L990MT
- 本文关键词:

