概念

左连接(Left Join):以左表为主表左表中每条数据都会跟右表所有数据进行对比一次,当所有条件不满足时,对应的右表数据以 null 显示

1

语法:select * from tbl1 Left Join tbl2 on tbl1.ID = tbl2.ID   

右连接(Right Join):跟左连接相反, 以右表为主表,右表中每条数据都会跟左表所有数据进行对比一次,当所有条件不满足时,对应的左表数据以 null 显示

2

语法:select * from tbl1 Right Join tbl2 on tbl1.ID = tbl2.ID

内连接(inner join): 本质其实就是 左连接 + 右连接 查询出来的结果 取交集

3

语法:select * FROM tbl1 INNER JOIN tbl2 ON tbl1.ID = tbl2.ID

概念看不懂?没关系,来看一下案例:

(1)首先准备两张表,数据如下:

客户表(Customers):

订单表(Orders):

左连接:

SELECT * FROM Customers LEFT JOIN Orders ON Customers.id = Orders.CustomerId;

执行流程:

左表 张三 会跟Orders表所有数据进行条件判断,可以知道,当CustomerId=1时,条件满足,所以打印该条数据,然后继续判断,满足条件就打印,直到跟右边所有数据比较完毕。接下来看李四,李四跟张三一样,首先会将他的id 跟Orders表所有数据进行对比,但此时所有条件都不满足,所以Orders表(右表)的数据以null显示,因为是左连接,所以左表无论条件是否满足,都会显示输出!

ps:上述只有当李四 所有条件都不满足时,所有条件都不满足时,所有条件都不满足时!重要的事情进三遍,李四对应的右表数据才会以null的形式打印

右连接:

SELECT * FROM Customers RIGHT JOIN Orders ON Customers.id = Orders.CustomerId;

执行流程:

右表为主表,打印右表的所有记录左表中连接字段相等的记录

内连接:

SELECT * FROM Customers INNER JOIN Orders ON Customers.id = Orders.CustomerId;

执行流程:

左连接和右连接查询出来的结果取交集

总结

无论是左连接还是右连接或者内连接,它们都会生成一个中间表来返回数据,区别在于on,如果是左连接,无论 on 后面的条件是否成立,左边表的数据都会返回,右连接同理!

补充:如果语句后面还有 where 语句,则相当于对生成的中间临时表进行过滤,此时就不管 outher join了,只有满足 where 条件的才会返回。

SQL 内连接、左连接、右连接案例相关推荐

  1. 数据库内、外、左、右连接详解

    写在前面: 数据库连接操作非常重要,明确连接操作有助于更好地掌握SQL语句查询操作. 数据库连表方式: 内连接 :inner join 外连接 :outer join 左外连接 :left outer ...

  2. linq to entity 左联接 右连接 以及内连接写法的区别(转)

    linq to entity 左连接 右连接 以及内连接写法的区别  还有就是用lambda表达式怎么写,那个效法效率高些? [解决办法] 左连右连还是内连这个其实你不需要关心.只需要根据实体的映射关 ...

  3. 区分笛卡儿积,自然连接,等值连接,内连接,外连接—左,右

    1.笛卡尔积 笛卡儿积,不用多说,返回所有的情况. 2.自然连接 自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系.自然连接是一种特殊的等值 ...

  4. oracle右连接失效,oracle 右连接

    t1.name(+) = t2.name 的意思是 用t2表做主表 t1表做副表做右关联 会用t2的所有数据,如果和t1关联不上则放空值 转自http://blog.csdn.net/one132/a ...

  5. 【MySQL】MySQL 的连接(内、左、右、全)

    一.表 的连 结 1.目的:减少数据的冗余 2.核心:分类 ***连接时至少要两张表,连接主要有内连接(inner join).左外连接(left outer join).右外连接(right out ...

  6. sqlite创建表联合主键的sql写法、执行sql文件、不支持右连接、获取年份、case when 的使用

    sqlite创建表时,联合主键,要写在建表语句最后一行,primary key (),括号里面: 执行sql文件:使用 .read xxx.sql 命令: 下图执行错误,应该是字段名含有中文,不能读取 ...

  7. c++中实现域内,左,右对齐的方法

    需要包含头文件 实现域内左对齐 int main() {cout.setf(ios::left);//for (int i = 0; i < 5; i++)cout << setw( ...

  8. sql内连接、左连接、右连接以及全连接查询

    Mysql 一,内连接.左连接.右连接以及全连接查询 一.内连接查询 inner join 关键字:inner join on 语句:select * from a_table a inner joi ...

  9. SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)

    目录 一.连接的介绍 连接是什么? 连接分几种? 条件连接 等值连接 自然连接 二.连接的使用 内连接 INNER JOIN 内连接与等值连接区别 内连接与自然连接区别 外连接 OUTER JOIN ...

  10. 图解SQL的连接:左连接、右连接、全连接、内连接、自然连接

    SQL的连接分为三类: 外连接(包括左连接left join.右连接right join.全连接full join) 内连接 inner join 自然连接 natural join 我们来看一个超级 ...

最新文章

  1. 【VMware vSAN 6.6】2.1.带有本地存储的服务器:vSAN硬件服务器解决方案
  2. JDK 1.6 HashMap 源码分析
  3. C++ STL容器总结之vector(超详细版)
  4. 学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
  5. CH - 0502 七夕祭(思维+中位数优化+前缀和优化)
  6. java如何添加同名的xml节点_jaxb怎么解析多个同名元素
  7. hamburger组件_一个侧边栏导航组件实现思路
  8. 虚拟dom_从0到1实现一个虚拟DOM
  9. 常用的系统架构 web服务器之iis,apache,tomcat三者之间的比较
  10. java基本语法(运算符)
  11. 黑客入侵Windows XP的几个常用方法
  12. 当代博物馆中的3DGIS虚拟现实搭建
  13. 谷歌(gmail)邮箱开启SMTP服务
  14. 【CS231n】斯坦福大学李飞飞视觉识别课程笔记(十九):卷积神经网络笔记(下)
  15. Android面试题集1
  16. 【wxPython 安装指南:error: legacy-install-failure】
  17. 前端智能化实践(附:D2 前端技术论坛 PPT 合集)
  18. IDS反病毒与APT的具体介绍
  19. 悟道 冥 与 力 万事皆可成
  20. 软件测试基础面试常问问题(三)

热门文章

  1. LibcSearcher找不到合适的libc(更新到python3版本Libc)
  2. 如何用matlab画紫罗兰,[转载]基于MATLAB的快速傅立叶分析程序设计
  3. Open Inventor 简介
  4. [转]日月悠长,山河无恙,行者无疆
  5. 鸿蒙渊主线任务,《天下3》年度资料片蓄势待发,奇幻山河创意无限!
  6. 作为篮球迷,我有一些话想说
  7. 我如何选择Parse.com的替代品
  8. 如何在Python中拆分字符串
  9. 位运算符+位运算的应用
  10. 功能测试报告的编写(版本测试报告与总结测试报告的应用)