按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
与数据库管理员来套交情好让他看管你那庞大的 多部门的数据库 另外的优点就是由于
网路的发展 每个表都可以放在不同的机器上 所有它可以在适当的地点由对它的内部数
据熟悉的人来进行维护 而不是像大型机那样需要一队的专家来进行维护
现在将 PARTS 表与 ORDERS 表进行联合
INPUT/OUTPUT
SELECT O。ORDEREDON O。NAME O。PARTNUM P。PARTNUM P。DESCRIPTION
FROM ORDERS O PART P
ORDEREDON NAME PARTNUM PARTNUM DESCRIPTION
15…MAY…1996 TRUE WHEEL 23 54 PEDALS
19…MAY…1996 TRUE WHEEL 76 54 PEDALS
2…SEP…1996 TRUE WHEEL 10 54 PEDALS
30…JUN…1996 TRUE WHEEL 42 54 PEDALS
124
…………………………………………………………Page 125……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
ORDEREDON NAME PARTNUM PARTNUM DESCRIPTION
30…JUN…1996 BIKE SPEC 54 54 PEDALS
30…MAY…1996 BIKE SPEC 10 54 PEDALS
30…MAY…1996 BIKE SPEC 23 54 PEDALS
17…JAN…1996 BIKE SPEC 76 54 PEDALS
17…JAN…1996 LE SHOPPE 76 54 PEDALS
1…JUN…1996 LE SHOPPE 10 54 PEDALS
1…JUN…1996 AAA BIKE 10 54 PEDALS
1…JUL…1996 AAA BIKE 76 54 PEDALS
1…JUL…1996 AAA BIKE 46 54 PEDALS
11…JUL…1996 JACKS BIKE 76 54 PEDALS
分析
上表只是结果集的一部分 实际上记录数应该有 14 定单行数 6 零件行数 =84
行 它与今天的早些时候 TABEL1 与 TABEL2 的联合类似 这条语句的结果仍然没有太大
的用处 在我们对这种语句深入之前 我们先回想并讨论一下别名的问题
正确地找到列
当你将 TABLE1 与 TABLE2 联合以后 你使用 SELECT * 来选择了表中的所有列 在
联合表 ORDER 和 PART 时 SELECT 看起来不太好懂
SELECT O。ORDEREDON O。NAME O。PARTNUM P。PARTNUM P。DESCRIPTION
SQL 可以知道 ORDEREDON 和 NAME 是在 ORDER 表中而 DESCRIPTION 则存在于
PART 表中 但是 PARTNUM 呢 它在两个表中都有啊 如果你想使用在两个表中都存在
的列 你必须使用别名来说明你想要的是哪一列 常用的办法为每一个表分配一个简单的
字符 就像你在 FROM 子句中所做的那样
FROM ORDERS O PART P
你可以在每一列中都使用这个字符 就像你刚才在 SELECT 中所做的那样 SELECT
子句也可以写成下边的形式
SELECT ORDEREDON NAME O。PARTNUM P。PARTNUM DESCRIPTION
可是不要忘记 有时你会不得不回过头来对查询进行维护 所以让它更具有可读性并
没有什么害处 还是不要使用这种省略的形式吧
125
…………………………………………………………Page 126……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
等值联合
下边的表是 ORDERS 与 PARTS 表的联合结果的片断 作为缺货的情况
30…JUN…1996 TRUEWHEEL 42 54 PEDALS
30…JUN…1996 BIKESPEC 54 54 PEDALS
30…MAY…1996 BIKESPEC 10 54 PEDALS
注意到 PARTNUM 是两个表的共有字段 如果输入如下的语句会有什么结果呢
INPUT
SELECT O。ORDEREDON O。NAME O。PARTNUM P。PARTNUM P。DESCRIPTION
FROM ORDERS O PART P WHERE O。PARTNUM P。PARTNUM
OUTPUT
ORDEREDON NAME PARTNUM PARTNUM DESCRIPTION
1…JUN…1996 AAA BIKE 10 10 TANDEM
30…MAY…1996 BIKE SPEC 10 10 TANDEM
2…SEP…1996 TRUE WHEEL 10 10 TANDEM
1…JUN…1996 LE SHOPPE 10 10 TANDEM
30…MAY…1996 BIKE SPEC 23 23 MOUNTAIN BIKE
15…MAY…1996 TRUE WHEEL 23 23 MOUNTAIN BIKE
30…JUN…1996 TRUE WHEEL 42 42 SEATS
1…JUL…1996 AAA BIKE 46 46 TIRES
30…JUN…1996 BIKE SPEC 54 54 PEDALS
1…JUL…1996 AAA BIKE 76 76 ROAD BIKE
17…JAN…1996 BIKE SPEC 76 76 ROAD BIKE
19…MAY…1996 TRUE WHEEL 76 76 ROAD BIKE
11…JUL…1996 JACKS BIKE 76 76 ROAD BIKE
17…JAN…1996 LE SHOPPE 76 76 ROAD BIKE
分析
利用在两个表中都存在的 PARTNUM 列 我们得到了存储在 ORDERS 表中的的信息
以及在 PARTS 中的与 ORDERS 相关的信息 它表明了你已经定出的零件数量 这种联合
操作称为等值联合 因为它只显示第一个表中的数据以及第二个表中的 存在于第一个表
中的数值
你也可以使用 WHERE 子句对其结果进行更大的限制 例如
INPUT/OUTPUT
SELECT O。ORDEREDON O。NAME O。PARTNUM P。PARTNUM P。DESCRIPTION
126
…………………………………………………………Page 127……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
FROM ORDERS O PARTP WHERE O。PARTNUM P。PARTNUM
AND O。PARTNUM=76
ORDEREDON NAME PARTNUM PARTNUMDES DESCRIPTION
1…JUL…1996 AAABIKE 76 76 ROADBIKE
17…JAN…1996 BIKESPEC 76 76 ROADBIKE
19…MAY…1996