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


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错误
Oct 14 面试题
简述你对Statement,PreparedStatement,CallableStatement的理解
Mar 25 面试题
怎样创建、运行java程序
Aug 01 面试题
构造方法和其他方法的区别?怎么调用父类的构造方法
Sep 22 面试题
main 函数执行以前,还会执行什么代码
Apr 17 面试题
static函数与普通函数有什么区别
Dec 25 面试题
不用游标的SQL语句有哪些
Sep 07 面试题
使用索引有什么好处
Jul 27 面试题
DataReader和DataSet的异同
Dec 31 面试题
Linux机考试题
Jul 17 面试题
长青弘远的面试题
Jun 09 面试题
什么是抽象
Dec 13 面试题
如何用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/03/15 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python文件操作基本流程代码实例
2017/12/11 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python if语句知识点用法总结
2018/06/10 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
django中的数据库迁移的实现
2020/03/16 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Django配置跨域并开发测试接口
2020/11/04 Python
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
学校安全生产月活动总结
2014/07/05 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书