设为首页 加入收藏

TOP

内连接和外连接
2015-07-24 11:37:31 来源: 作者: 【 】 浏览:4
Tags:连接
-------------------------------------------------------------------- 内连接 -------------------------------------------------------------------- 内连接就是两张表都只显示符合连接条件的行。 举例1: 假设有两个Excel报表:出货表和产品表 出货表: 日期 客户 产品编码 数量 2003-10-20 永华公司 1001 10 2003-10-21 风貌公司 1002 20 产品表: 产品编码 产品名称 生产厂家 1001 PC机 创成公司 1002 打印机 风华公司 内连接条件为:出货表.产品编码=产品表.产品编码 内连接的结果集为: 日期 客户 产品编号 数量 产品名称 生产厂家 2003-10-20 永华公司 1001 10 PC机 创成公司 2003-10-21 风貌公司 1002 20 打印机 风华公司
举例2: Book表
BookId BookName StudentId
1 培训 3
2 《成功秘诀》 5
3 《红楼梦》 3
4 《西厢记》 2
5 《水浒传》 6
6 《三国演义》 10
Student表
StudentId StudentName
1 张三
2 李四
3 关羽
4 张飞
5 黄聪
6 李逵
7 赵娜
8 王敏
NULL NULL

内连接查询:

select * from [Book] as b,[Student] as s where b.StudentId=s.StudentId

等价于如下(也可以不要关键字inner,此为系统默认)

select * from [Book] as b inner join [Student] as s ON b.StudentId=s.StudentId

内连接查询结果:
BookId BookName StudentId StudentName
4 《西厢记》 2 李四
1 《培训》 3 关羽
3 《红楼梦》 3 关羽
2 《成功秘诀》 5 黄聪
5 《水浒传》 6 李逵

----------------------------------------------------------------------- 外连接 ----------------------------------------------------------------------- 左外连接查询:

select * from [Book] as b left join [Student] as s ON b.StudentId=s.StudentId

查询结果:

BookId BookName StudentId StudentId StudentName
1 《培训》 3 3 关羽
2 《成功秘诀》 5 5 黄聪
3 《红楼梦》 3 3 关羽
4 《西厢记》 2 2 李四
5 《水浒传》 6 6 李逵
6 《三国演义》 10 NULL NULL
?

执行过程:

即以from [Book] left join [Student]的Book表为基准,即以Book表(b表)的b.StudentId为基准。遍历Student表(s表)中与之匹配的b.StudentId。若b.StudentId含有s.StudentId匹配项,则进行拼接,然后遍历Student表的下一条s.StudentId,当查询完毕则进入下一条b.StudentId。若b.StudentId没有相应s.StudentId匹配项时,则显示左表的项,拼接右表的项显示为NULL。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇【Redis2】Redis数据库的学习与实.. 下一篇.NET(C#)连接各类数据库-集锦

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【超详细】JDK 下载 (2025-12-24 18:19:32)
·Java_百度百科 (2025-12-24 18:19:29)
·简介 - Java教程 - (2025-12-24 18:19:27)
·C++ 语言社区-CSDN社 (2025-12-24 17:48:24)
·CSDN问答专区社区-CS (2025-12-24 17:48:22)