MySQL中表的几种连接方式

 更新时间:2020年11月18日 09:07:19   作者:超人不会飞  
这篇文章主要给大家介绍了关于MySQL中表的几种连接方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

MySQL表中的连接方式其实非常简单,这里就简单的罗列出他们的特点。

表的连接(JOIN)可以分为内连接(JOIN/INNER JOIN)和外连接(LEFT JOIN/RIGHT JOIN)。

首先我们看一下我们本次演示的两个表:

mysql> SELECT * FROM student;
+------+----------+------+------+
| s_id | s_name  | age | c_id |
+------+----------+------+------+
|  1 | xiaoming |  13 |  1 |
|  2 | xiaohong |  41 |  4 |
|  3 | xiaoxia |  22 |  3 |
|  4 | xiaogang |  32 |  1 |
|  5 | xiaoli  |  41 |  2 |
|  6 | wangwu  |  13 |  2 |
|  7 | lisi   |  22 |  3 |
|  8 | zhangsan |  11 |  9 |
+------+----------+------+------+
8 rows in set (0.00 sec)

mysql> SELECT * FROM class;
+------+---------+-------+
| c_id | c_name | count |
+------+---------+-------+
|  1 | MATH  |  65 |
|  2 | CHINESE |  70 |
|  3 | ENGLISH |  50 |
|  4 | HISTORY |  30 |
|  5 | BIOLOGY |  40 |
+------+---------+-------+
5 rows in set (0.00 sec)

首先,表要能连接的前提就是两个表中有相同的可以比较的列。

1.内连接

mysql> SELECT * FROM student INNER JOIN class ON student.c_id = class.c_id;
+------+----------+------+------+------+---------+-------+
| s_id | s_name  | age | c_id | c_id | c_name | count |
+------+----------+------+------+------+---------+-------+
|  1 | xiaoming |  13 |  1 |  1 | MATH  |  65 |
|  2 | xiaohong |  41 |  4 |  4 | HISTORY |  30 |
|  3 | xiaoxia |  22 |  3 |  3 | ENGLISH |  50 |
|  4 | xiaogang |  32 |  1 |  1 | MATH  |  65 |
|  5 | xiaoli  |  41 |  2 |  2 | CHINESE |  70 |
|  6 | wangwu  |  13 |  2 |  2 | CHINESE |  70 |
|  7 | lisi   |  22 |  3 |  3 | ENGLISH |  50 |
+------+----------+------+------+------+---------+-------+
7 rows in set (0.00 sec)

简单的讲,内连接就是把两个表中符合条件的行的所有数据一起展示出来,即如果不符合条件,即在表A中找得到但是在B中没有(或者相反)的数据不予以显示。

2.外连接

mysql> SELECT * FROM student LEFT JOIN class ON student.c_id = class.c_id;
+------+----------+------+------+------+---------+-------+
| s_id | s_name  | age | c_id | c_id | c_name | count |
+------+----------+------+------+------+---------+-------+
|  1 | xiaoming |  13 |  1 |  1 | MATH  |  65 |
|  2 | xiaohong |  41 |  4 |  4 | HISTORY |  30 |
|  3 | xiaoxia |  22 |  3 |  3 | ENGLISH |  50 |
|  4 | xiaogang |  32 |  1 |  1 | MATH  |  65 |
|  5 | xiaoli  |  41 |  2 |  2 | CHINESE |  70 |
|  6 | wangwu  |  13 |  2 |  2 | CHINESE |  70 |
|  7 | lisi   |  22 |  3 |  3 | ENGLISH |  50 |
|  8 | zhangsan |  11 |  9 | NULL | NULL  | NULL |
+------+----------+------+------+------+---------+-------+
8 rows in set (0.00 sec)


mysql> SELECT * FROM student RIGHT JOIN class ON student.c_id = class.c_id;
+------+----------+------+------+------+---------+-------+
| s_id | s_name  | age | c_id | c_id | c_name | count |
+------+----------+------+------+------+---------+-------+
|  1 | xiaoming |  13 |  1 |  1 | MATH  |  65 |
|  4 | xiaogang |  32 |  1 |  1 | MATH  |  65 |
|  5 | xiaoli  |  41 |  2 |  2 | CHINESE |  70 |
|  6 | wangwu  |  13 |  2 |  2 | CHINESE |  70 |
|  3 | xiaoxia |  22 |  3 |  3 | ENGLISH |  50 |
|  7 | lisi   |  22 |  3 |  3 | ENGLISH |  50 |
|  2 | xiaohong |  41 |  4 |  4 | HISTORY |  30 |
| NULL | NULL   | NULL | NULL |  5 | BIOLOGY |  40 |
+------+----------+------+------+------+---------+-------+
8 rows in set (0.00 sec)

上面分别展示了外连接的两种情况:左连接和右连接。这两种几乎是一样的,唯一的区别就是左连接的主表是左边的表,右连接的主表是右边的表。而外连接与内连接不同的地方就是它会将主表的所有行都予以显示,而在主表中有,其他表中没有的数据用NULL代替。

总结

到此这篇关于MySQL中表的几种连接方式的文章就介绍到这了,更多相关MySQL表的连接方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决MySQl查询不区分大小写的方法讲解

    解决MySQl查询不区分大小写的方法讲解

    今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • CentOS7.3下mysql 8.0.13安装配置方法图文教程

    CentOS7.3下mysql 8.0.13安装配置方法图文教程

    这篇文章主要为大家详细介绍了CentOS7.3下mysql 8.0.13安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Mysql的root账户密码忘记了怎么解决(百分百教会你重置!)

    Mysql的root账户密码忘记了怎么解决(百分百教会你重置!)

    mysql是常用的数据库,很多程序员在使用的过程中会出现root用户密码忘记的事情,这篇文章主要给大家介绍了关于Mysql的root账户密码忘记了该怎么解决的相关资料,文中介绍的方法百分百教会你如何重置,需要的朋友可以参考下
    2024-05-05
  • mysql 8.0.19 win10快速安装教程

    mysql 8.0.19 win10快速安装教程

    这篇文章主要为大家详细介绍了mysql 8.0.19 win10快速安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • 干涉MySQL优化器使用hash join的方法

    干涉MySQL优化器使用hash join的方法

    这篇文章主要介绍了如何干涉MySQL优化器使用hash join,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • MySQL复制机制原理讲解

    MySQL复制机制原理讲解

    在本篇文章中小编通过诙谐幽默的语言图文给大家讲述了MySQL复制机制的原理及相关知识点,需要的朋友们参考下。
    2019-05-05
  • K8S搭建MySQL一主一从集群详细步骤

    K8S搭建MySQL一主一从集群详细步骤

    在k8s上命名空间是用于隔离不同应用的一种机制,我们可以使用命名空间来组织和管理MySQL集群,这篇文章主要给大家介绍了关于K8S搭建MySQL一主一从集群的相关资料,需要的朋友可以参考下
    2023-09-09
  • Mysql使用全文索引(FullText index)的实例代码

    Mysql使用全文索引(FullText index)的实例代码

    使用索引时数据库性能优化的必备技能之一,下面这篇文章主要给大家介绍了关于Mysql使用全文索引(FullText index)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • MySQL子查询操作实例详解

    MySQL子查询操作实例详解

    这篇文章主要介绍了MySQL子查询操作,结合实例形式较为详细的分析了mysql表的创建、常见子查询运算与关键字使用技巧,需要的朋友可以参考下
    2018-06-06
  • mysql中多表删除其中ID相同记录的方法

    mysql中多表删除其中ID相同记录的方法

    这篇文章主要介绍了mysql中多表删除其中ID相同记录的方法,需要的朋友可以参考下
    2014-04-04

最新评论