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


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

面试题 相关文章推荐
关于递归的一道.NET面试题
May 12 面试题
一套带网友答案的.NET笔试题
Dec 06 面试题
TCP/IP的分层模型
Oct 27 面试题
3个CCIE对一个工程师的面试题
May 06 面试题
逻辑链路控制协议
Oct 01 面试题
Linux Interview Questions For software testers
May 17 面试题
Windows和Linux动态库应用异同
Jul 28 面试题
linux比较文件内容的命令是什么
Mar 04 面试题
百度JavaScript笔试题
Jan 15 面试题
如何唤起类中的一个方法
Nov 29 面试题
String、StringBuffer、StringBuilder有区别
Sep 18 面试题
介绍一下你对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
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
sails框架的学习指南
2014/12/22 Javascript
javascript每日必学之多态
2016/02/23 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
python3实现字符串操作的实例代码
2019/04/16 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
Python函数调用追踪实现代码
2020/11/27 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
shell的种类有哪些
2015/04/15 面试题
后勤自我鉴定
2013/10/13 职场文书
项目开发计划书
2014/01/09 职场文书
大二学期个人自我评价
2014/01/13 职场文书
幼儿园消防安全制度
2014/01/26 职场文书
敬老院标语
2014/06/27 职场文书
新课培训心得体会
2014/09/03 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
创先争优个人总结
2015/03/04 职场文书
会计岗位工作总结
2015/08/12 职场文书
MySQL索引是啥?不懂就问
2021/07/21 MySQL