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


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...

面试题 相关文章推荐
精伦电子Java笔试题
Jan 16 面试题
介绍一下sql server的安全性
Aug 10 面试题
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
Sep 17 面试题
Javascript如何发送一个Ajax请求
Jan 26 面试题
什么是静态路由?什么是动态路由?各自的特点是什么?
Sep 16 面试题
Solaris操作系统的线程机制
Jul 28 面试题
How TDD works
Sep 30 面试题
GWT的应用有哪两种部署模式
Dec 21 面试题
几个MySql的面试题
Apr 22 面试题
Java程序员面试题
Sep 27 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
Oct 22 面试题
如何定义一个可复用的服务
Sep 30 面试题
如何用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源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
深入PHP变量存储的详解
2013/06/13 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
php数组键名技巧小结
2015/02/17 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
javaScript语法总结
2016/11/25 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
js a标签点击事件
2017/03/30 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python与shell的3种交互方式介绍
2015/04/11 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
python的移位操作实现详解
2019/08/21 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
李宁官方网店:中国运动品牌
2017/11/02 全球购物
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
假日旅行社实习自我鉴定
2013/09/24 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python