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


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的笔试题
May 31 面试题
这段代码难道不该打印出56吗
Feb 27 面试题
介绍一下#error预处理
Sep 25 面试题
怎样在程序里获得一个空指针
Jan 24 面试题
Sql面试题
Mar 20 面试题
铭万公司.net面试题笔试题
Jul 20 面试题
如果Session Bean得Remove方法一直都不被调用会怎么样
Jul 14 面试题
网友共享的几个面试题关于Java和Unix等方面的
Sep 08 面试题
AJAX都有哪些有点和缺点
Nov 03 面试题
AJAX的优缺点都有什么
Aug 18 面试题
深圳茁壮笔试题
May 28 面试题
什么是servlet
May 08 面试题
如何用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
打造计数器DIY三步曲(中)
2006/10/09 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
一段实用的php验证码函数
2016/05/19 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
npm 下载指定版本的组件方法
2018/05/17 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
理解python多线程(python多线程简明教程)
2014/06/09 Python
Python中input和raw_input的一点区别
2014/10/21 Python
python中偏函数partial用法实例分析
2015/07/08 Python
python异常和文件处理机制详解
2016/07/19 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
python抓取网页中链接的静态图片
2018/01/29 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
用Python写一个自动木马程序
2019/09/17 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
python函数超时自动退出的实操方法
2020/12/28 Python
火锅店营销方案
2014/02/26 职场文书
公证书格式
2015/01/23 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
Spring Boot 实现 WebSocket
2022/04/30 Java/Android