介绍一下内联、左联、右联


Posted in 面试题 onDecember 31, 2013
一.先看一些最简单的例子

例子

Table A
aid adate
1 a1
2 a2
3 a3

TableB

bid bdate
1 b1
2 b2
4 b4
两个表a,b相连接,要取出id相同的字段
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2

那么left join 指:
select * from a left join b on a.aid = b.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
3 a3 空字符

同样的也有right join
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
4 空字符 b4

LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值

二. left join/right join/inner join操作演示

表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115

表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408

实验如下:
1. left join
sql语句如下:

SELECT * FROM A
LEFT JOIN B
ON A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影响的行数为 5 行)

结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.

2. right join
sql语句如下:

SELECT * FROM A
RIGHT JOIN B
ON A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(所影响的行数为 5 行)

结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

3.inner join
sql语句如下:

SELECT * FROM A
INNERJOIN B
ON A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

-----------------[以下为网上的一点资料]------------------
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:
FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:
① table1, table2参数用于指定要将记录组合的表的名称。
② field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
③ compopr参数指定关系比较运算符:”=”, ““, “=” 或 ““。
④ 如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。

Tags in this post...

面试题 相关文章推荐
六道php面试题附答案
Jun 05 面试题
为什么使用接口?
Aug 13 面试题
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
Mar 14 面试题
JAVA和C++的区别
Oct 06 面试题
对于没有初始化的变量的初始值可以作怎样的假定
Oct 12 面试题
开放系统互连参考模型
Jun 29 面试题
一些Solaris面试题
Mar 22 面试题
介绍一下write命令
Aug 10 面试题
为什么要做架构设计
Jul 08 面试题
提高EJB性能都有哪些技巧
Mar 25 面试题
如何唤起类中的一个方法
Nov 29 面试题
介绍一下你对SOA的认识
Apr 24 面试题
如何用SQL语句进行模糊查找
Sep 25 #面试题
存储过程的优缺点是什么
Jan 10 #面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 #面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
SQL Server里面什么样的视图才能创建索引
Apr 17 #面试题
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
Apr 28 #面试题
You might like
PHP内置函数生成随机数实例
2019/01/18 PHP
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
初中校园广播稿
2014/02/02 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
学前教育专业求职信
2014/09/02 职场文书
银行工作心得体会范文
2016/01/23 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python