MySQL基础教程34-连接查询-外连接
2018-01-24 22:44
886 查看
前面一篇学习了内连接,本篇来学习外连接,外连接有左外连接和右外连接。本篇主要连接外连接和内连接的基本使用方法。外连接(outer join),是以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接。不管能不能匹配上条件,最终都会保留,也就是说,能匹配,正确保留;不能匹配,其他表的字段都置空(NULL)。
外连接分两种情况,是以某张表为主,有主表。当以左表为主表,这个叫left join,左外连接,我们习惯简称左连接;当以右表为主表,这个叫right join,右外连接,同样,简称右连接。
基本语法:左表 left/right join 右表on 左表.字段=右表.字段;
左外连接举例:查询表my_student和my_class中id相同的学生信息和课程名称;
数据设计,在查询之前,我们有这么两个表,表数据如下。
这里以左表为主表,左连接查询效果后如下。
当如果主表的某字段为空的时候,匹配后,右表其他字段自动为NULL。例如下面这样,我们把张三的c_id更新为null,然后再次进行左连接查询,看看效果。
发现左表的c_id为空,匹配后右表其他字段都默认为空。
因为我们主表是左表,右表记录没有匹配上,所以字段值为NULL。
右连接
上面介绍了左连接,那么右连接就简单了,直接替换,把右表当主表。
上面显示5条结果是因为,当前右表为主,而且副表有id为null,和主表匹配不上,匹配不上所以不会显示该条记录。而且我们可以发现,虽然左连接和右连接有主表区分,但是显示结果,左表的数据始终在左边,右表数据显示在右边。
其实,左右连接是可以互相转换的。
外连接分两种情况,是以某张表为主,有主表。当以左表为主表,这个叫left join,左外连接,我们习惯简称左连接;当以右表为主表,这个叫right join,右外连接,同样,简称右连接。
基本语法:左表 left/right join 右表on 左表.字段=右表.字段;
左外连接举例:查询表my_student和my_class中id相同的学生信息和课程名称;
数据设计,在查询之前,我们有这么两个表,表数据如下。
这里以左表为主表,左连接查询效果后如下。
当如果主表的某字段为空的时候,匹配后,右表其他字段自动为NULL。例如下面这样,我们把张三的c_id更新为null,然后再次进行左连接查询,看看效果。
发现左表的c_id为空,匹配后右表其他字段都默认为空。
因为我们主表是左表,右表记录没有匹配上,所以字段值为NULL。
右连接
上面介绍了左连接,那么右连接就简单了,直接替换,把右表当主表。
上面显示5条结果是因为,当前右表为主,而且副表有id为null,和主表匹配不上,匹配不上所以不会显示该条记录。而且我们可以发现,虽然左连接和右连接有主表区分,但是显示结果,左表的数据始终在左边,右表数据显示在右边。
其实,左右连接是可以互相转换的。
相关文章推荐
- MySQL基础教程33-连接查询-内连接
- MySql基础教程一(查询,插入,更新,删除,创建)
- MySQL基础教程第一篇 mysql5.7.18安装和连接教程
- 数据应用达人之SQL基础教程分享8-子查询、连接、组合查询
- 09--MySQL自学教程:多表查询之内连接、外连接以及【子查询】
- php操作MongoDB基础教程(连接、新增、修改、删除、查询)
- MySQL基础语句之子查询与连接《图文三》
- MySQL基础教程28-高级查询-数据源
- MySQL中对表连接查询的简单优化教程
- MYSQL基础_聚合函数_分组和多表连接查询
- Java基础16:Java和Mysql的连接、查询和修改
- 史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- MySQL中表子查询与关联子查询的基础学习教程
- mysql 简单教程(一) ----数据库连接和简单查询
- 史上最简单的 MySQL 教程(二十七)「连接查询(下)」
- MySQL中基本的多表连接查询教程
- MySQL基础教程29-高级查询-where子句
- MySql基础教程(三)——查询训练
- MySQL中基本的多表连接查询教程
- MySQL中基本的多表连接查询教程