多表联查时,有些数据没有对应另一个表的数据,即对应为空。

內连接:仅选出两张表中互相匹配的记录,有对应为空的则筛选出去,这些数据就不会被搜索出来。内连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来。

语法:select 字段 from 表1 inner join 表2 on 条件;

select * from 表1,表2where 条件    from后面直接写两个表名,这样写等价于内连接 如果不写 where 条件,相当于笛卡尔积,即输出表1所有数据对应表2所有数据的结果。

外连接:包括左连接、右连接等。

左连接:会保留一部分对应为空的数据,语法为select 字段 from 表1 left join 表2 on 条件,只返回左表(即表1)中不符合连接条件单符合查询条件的数据行,即所有表1的数据。

右连接:和左连接相反,会保留一部分对应为空的数据,语法为select 字段 from 表1 right join 表2 on 条件,只返回右表(即表2)中不符合连接条件单符合查询条件的数据行,即所有表2的数据。

WHERE条件放在ON后面查询的结果是不一样的。

ON条件:是过滤两个链接表笛卡尔积形成中间表的约束条件。
WHERE条件:在有ON条件的SELECT语句中是过滤中间表的约束条件。在没有ON的单表查询中,是限制物理表或者中间查询结果返回记录的约束。在两表或多表连接中是限制连接形成最终中间表的返回结果的约束。
从这里可以看出,将WHERE条件移入ON后面是不恰当的。推荐的做法是:
ON只进行连接操作,WHERE只过滤中间表的记录。

此段转自:深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接 - New.Young - 博客园

eg:

学生表

班级表

学生表的classid和班级表的id对应,关系为多对一

内连接:

select * from student inner join classes on student.classid=classes.id

结果:

左连接(推荐):

select * from student left join classes on student.classid=classes.id

结果:

可见,左表的数据是全的

右连接:

select * from student right join classes on student.classid=classes.id

结果:

可见右表的数据是全的

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. c++中实现域内,左,右对齐的方法

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

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

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

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

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

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

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

  10. SQL内连接,左连接,右连接区别及联系

    目录 数据库建表及其内容 内连接(默认连接) 左连接 右连接 总结: 数据库建表及其内容 stu表 班级表(class) 内连接(默认连接) SELECT stu.stuname , classnam ...

最新文章

  1. Centos6.5升级gcc for qt5.3.1
  2. 图像检索:拓展查询(Query Expansion)
  3. maven的离线模式
  4. Android开发中的多线程编程技术
  5. 恼人的函数指针(一)
  6. Pygame 整活五子棋
  7. Oracle数据字典全解 (1)
  8. HTML和XHTML解析(HTMLParser、BeautifulSoup)
  9. 云栖回顾|龙蜥论坛圆桌环节都有哪些精彩观点?
  10. 如何在内网环境下解决rpm包的问题
  11. 关于OneDrive一直显示“正在登陆”的一种可能解决方法
  12. 计算方法-数值积分与微分
  13. scratch(图形化编程工具)使用画笔绘制雪绒花!真的太美了!
  14. 小程序使用场景展示-小程序开发
  15. java类嵌套_java-嵌套类
  16. 【我们是冠军】2021年大数据领域第一名の博客之星活动复盘
  17. 微信商城系统开发具体流程
  18. windows cmd bat获取局域网本机ip
  19. MATLAB画图使用不同的线型、点及标记
  20. oracle数据库实现汇总报表的方法

热门文章

  1. 【阿里技术】2019年开发者必读!20位阿里技术大牛们帮你列了一份经典书单!
  2. python random设置种子_关于python:如何查询random.random()使用的种子?
  3. 修改Tomcat8的默认访问端口8080
  4. 中国联通沃支付echop支付插件
  5. 联通沃商店游戏中心接入规范(2014新版)
  6. Java编写ASCII码转换
  7. 方舟生存计划怎么删除服务器信息,方舟进化生存怎么删服务器存档
  8. 微信公众号支付开发全过程
  9. matlab 非线性辨识,非线性系统辨识Matlab实现
  10. 《开源公开课分享》:Java开源框架案例分享