数据库 第08章 多表联接
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
尽量不要 使用*
1 1 4 3 4
1 1 4 3 4
2 3 1 5 2
15 5 37 11 1003
11
使用外联接
左外联接的结果表中除了满足连接条件的行, 还包括左表中的所有剩余行,但不包括右表中 的不匹配行 使用左外联接时,请注意
不满足联接条件的记录将显示空值 左联接可以显示左表中所有记录 可以把 LEFT OUTER JOIN 简写为 LEFT JOIN
第8章 多表联接
使用表的别名
组合多个表中的数据 合并多个结果集
Copyright@2008
1
使用表的别名
两种方式
SELECT * FROM server.database.schema.table AS 别名
SELECT * FROM server.database.schema.table
别名
给字段起名
USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers ,sales WHERE buyers.buyer_id = sales.buyer_id GO
Copyright@2008
10
使用内联接(续)
比较之二
USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id buyer_name buyer_id qty GO a 1 15
a 1 4 3 4 5 37 11 1003
USE joindb SELECT * FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id GO
a a d c d
Copyright@2008
d c d
buyer_name buyer_id buyer_id prod_id qty
使用多表联接时,必须慎重地指定字段名,任何数 据库对象名称包含四个标识: 服务器名、数据库名、主人名称、对象名
Copyright@2008 2
使用表的别名(续)
举例
从订单详细表中查询单价高于100的订单号、产品号、 单价 SELECT od.orderid, od.productid, od.unitprice FROM [order details] AS od
Copyright@2008
12
使用外联接(左联接)
查询所有购买 者的购买情况
buyers
buyer_name a
b c d USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers LEFT OUTER JOIN sales ON buyers.buyer_id = sales.buyer_id GO
5
联接概述
从多个表中选择指定的字段
关键字 JOIN 指定要联接的表,以及这些表联 接的方式 关键字 ON 指定联接条件
查询两个或多个表并生成单个结果集
所有联接的表必须共同拥有某些字段,这些 字段必须有相同的或兼容的数据类型 如果联接的表有相同字段,则引用这些字段 时必须指定表名
Copyright@2008 6
联接概述(续)
连接类型
交叉连接:Cross Join (不太用) 内连接:[Inner] Join (最常用)
外连接:
左外连接:Left [Outer] Join 右外连接:Right [Outer] Join 完全连接:Full [Outer] Join
自连接:Self Join
Copyright@2008 7
使用内联接(续)
列出购买产品 的顾客信息
buyers
buyer_name a b c d buyer_id 1 2 3 4 1 1 4 3 4 1 1 3 4 4
Copyright@2008
USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id GO
不满足条件 的显示null
13
使用外联接(右联接)
右外联接结果表中除了满足连接条件的行,还 包括右表中的所有剩余行,但不包括左表中的 不匹配行 使用右外联接时,请注意
不满足联接条件的记录将显示空值 右联接可以显示右表中所有记录 可以把 RIGHT OUTER JOIN 简写为 RIGHT JOIN
Where od.unitprice > 100
表的 别名
Copyright@2008
3
第8章 多表联接
使用表的别名
组合多个表中的数据 合并多个结果集
Copyright@2008
4
组合多个表中的数据
联接概述 使用内联接 使用外联接 使用交叉联接 联接两个以上的表 自联接 (Self-Join)
Copyright@2008
sales
2
3 1 5 2
buyer_id 1
2 3 4
buyer_id prod_id 1
1
qty 15
5 37 11 1003
结果
buyer_name buyer_id a a b c d d 1 1 NULL 3 4 4
Copyright@2008
4 qty 15 5 NULL 11 37 1003 3 4
使用内联接
内联接通过比较被联接的表所共同拥有的字段, 把多个表联接起来 语法
SELECT 列名列表 FROM 表名1 [INNER] JOIN 表名2 ON 表名1.列名 <比较运算符> 表名2.列名
来自百度文库
注意
INNER可以省略。 <比较运算符>包括= 、 >、<、<>等。
Copyright@2008 8
sales
buyer_id prod_id qty
2 3 1 5 2 15 5 37 11 1003
结果
buyer_name buyer_id qty a a c d d 15 5 11 37 1003
9
使用内联接(续)
比较之一
示例
USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id GO