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


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

面试题 相关文章推荐
Yahoo的PHP面试题
May 26 面试题
如何实现jdbc性能优化
Jul 30 面试题
super()与this()的区别
Jan 17 面试题
JSF面试题:Jsf中导航的标签是什么
Apr 20 面试题
纬创Java面试题笔试题
Oct 02 面试题
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
Apr 15 面试题
介绍一下SQL中union,intersect和minus
Apr 05 面试题
网络通讯中,端口有什么含义,端口的取值范围
Nov 23 面试题
什么是ARP(Address Resolution Protocol)地址解析协议
Oct 31 面试题
C#软件工程师英语面试题
Jun 07 面试题
介绍一下gcc特性
Oct 31 面试题
如何用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生成缩略图的类代码
2008/10/02 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php 生成短网址原理及代码
2014/01/23 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
JavaScript运算符小结
2015/06/03 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python实现马耳可夫链算法实例分析
2015/05/20 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
企业治理工作自我评价
2013/09/26 职场文书
文秘专业大学生求职信
2013/11/10 职场文书
结构工程个人自荐信范文
2013/11/30 职场文书
水电施工员岗位职责
2015/04/11 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
三十年同学聚会感言
2015/07/30 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python