Mysql两表联合查询的四种情况总结

下面是详细讲解“Mysql两表联合查询的四种情况总结”的完整攻略。

简介

Mysql联合查询是指在多个表中查询出相关联的数据,并将这些数据组合成一个数据集合。

一般常见的联合查询有两个表之间的连接查询和两个表的全集查询,而这两种查询又可以分成内联接、左联接、右联接、全联接等四种情况。下面我们将分别介绍这四种情况的使用方法。

内联接

内联接是指仅显示两个表中相匹配的行。在 MySQL 中,内联接默认是 INNER JOIN 。

内联接的语法:

SELECT 表1.字段1,表2.字段1, 表2.字段2...
FROM 表1
INNER JOIN 表2
ON 表1.字段=表2.字段;

示例:

假设我们有两个表,一个叫stu, 一个叫score,stu表中保存了学生的姓名和ID信息,score表中保存了学生成绩信息(包括ID和成绩信息),我们希望查询出两个表匹配的学生ID、姓名和成绩。

首先我们需要使用 INNER JOIN 语句连接两个表,具体代码如下:

SELECT score.ID, stu.name, score.score
FROM score 
INNER JOIN stu 
ON score.ID = stu.ID;

执行结果如下:

+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | Tom  |   88  |
|  2 | Mike |   92  |
|  3 | Jack |   78  |
+----+------+-------+

说明:这个查询语句使用了 INNER JOIN 命令、score 表和 stu 表。

左联接

左联接的语法:

SELECT 表1.字段1,表2.字段1, 表2.字段2...
FROM 表1
LEFT JOIN 表2
ON 表1.字段=表2.字段;

示例:

我们还可以使用左联接查询出两个表中匹配和不匹配的数据,具体代码如下:

SELECT stu.ID, stu.name, score.score
FROM stu
LEFT JOIN score
ON stu.ID = score.ID;

执行结果如下:

+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | Tom  |   88  |
|  2 | Mike |   92  |
|  3 | Jack |   78  |
|  4 | John |  NULL |
+----+------+-------+

说明:这个查询语句使用了 LEFT JOIN 命令、score 表和 stu 表。

右联接

右联接的语法:

SELECT 表1.字段1,表2.字段1, 表2.字段2...
FROM 表1
RIGHT JOIN 表2
ON 表1.字段=表2.字段;

示例:

我们还可以使用右联接查询出两个表中匹配和不匹配的数据,具体代码如下:

SELECT stu.ID, stu.name, score.score
FROM stu
RIGHT JOIN score
ON stu.ID = score.ID;

执行结果如下:

+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | Tom  |   88  |
|  2 | Mike |   92  |
|  3 | Jack |   78  |
|NULL| NULL |   60  |
+----+------+-------+

说明:这个查询语句使用了 RIGHT JOIN 命令、score 表和 stu 表。

全联接

全联接查询是指返回两个表中所有的数据。全联接的语法:

SELECT 表1.字段1,表2.字段1, 表2.字段2...
FROM 表1
FULL JOIN 表2
ON 表1.字段=表2.字段;

示例:

我们还可以使用全联接查询出两个表中全部的数据,具体代码如下:

SELECT stu.ID, stu.name, score.score
FROM stu
FULL JOIN score
ON stu.ID = score.ID;

执行结果如下:

+----+------+-------+
| ID | name | score |
+----+------+-------+
|  1 | Tom  |   88  |
|  2 | Mike |   92  |
|  3 | Jack |   78  |
|  4 | John |  NULL |
|NULL| NULL |   60  |
+----+------+-------+

说明:这个查询语句使用了 FULL JOIN 命令、score 表和 stu 表。

结束语

这就是 Mysql 两表联合查询的四种情况的操作方法了。需要注意的是,在 Mysql 的语句中,内联接默认的是 INNER JOIN,而其他三种则需要分别使用 LEFT JOIN、RIGHT JOIN、FULL JOIN 进行操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql两表联合查询的四种情况总结 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • .NET/C#操作Redis的简单方法

    本文属于Redis初级应用,只起初步引路作用,高手们可略过。 支持.Net Core(2.0及以上)/.Net Framework(4.5及以上),可以部署在Docker, Windows, Linux, Mac。 Redis作为一款主流的缓存工具在业内已广受欢迎。本文将会介绍操作Redis的一种最简单的方法。   本文假定你身边已有安装好的Redis应用,…

    Redis 2023年4月10日
    00
  • mysql慢查询日志轮转_MySQL慢查询日志实操

    MySQL慢查询日志实操 MySQL慢查询日志可以记录执行时间超过设定阈值的SQL语句,方便进行性能分析和优化。但是如果日志文件过大,会占用大量磁盘空间,因此需要进行日志轮转。本文将详细讲解MySQL慢查询日志的轮转操作。 检查慢查询日志状态 在进行日志轮转操作之前,我们需要确认慢查询日志是否已经开启。可以通过以下命令查看慢查询日志是否开启: show va…

    database 2023年5月22日
    00
  • mysql数据库修改添加Date格式列的方法

    下面就是mysql数据库修改添加Date格式列的方法的完整攻略: 1. 确定要修改添加Date格式列的表 在mysql数据库中,要修改添加Date格式列的表必须存在。因此,首先需要确定要操作的表名称。 2. 修改添加Date格式列的方法 2.1 修改已有表的Date格式列 如果要修改已有表的Date格式列,需要使用alter table语句,具体如下: AL…

    database 2023年5月22日
    00
  • SQL 变换结果集成多行

    在 SQL 中,我们可以使用一些变换(Transformation)函数将结果集转换为多行或单行。以下是 SQL 变换结果集成多行的完整攻略,包含两条实例。 一、使用 GROUP_CONCAT 在 MySQL 中,我们可以使用 GROUP_CONCAT 函数将多行数据合并成一行。如下: SELECT category, GROUP_CONCAT(produc…

    database 2023年3月27日
    00
  • 利用Mysql定时+存储过程创建临时表统计数据的过程

    创建临时表统计数据是Mysql中一种常见且高效的统计方式。这种方式通过利用Mysql的定时任务和存储过程,将统计数据存储在临时表中,从而降低主查询的复杂度,提高查询效率。 下面是创建临时表统计数据的完整攻略。 步骤一:创建存储过程 创建存储过程是创建临时表统计数据的关键步骤。在存储过程中,需要使用以下语句: 删除已有的临时表 DROP TEMPORARY T…

    database 2023年5月22日
    00
  • SQL 计算中位数

    SQL 计算中位数 中位数是指将一组数据按从小到大(或从大到小)的顺序排列,位于中间位置的数值,即能将该组数据均分成两部分的数值。 通常有两种方式计算中位数: 对于数量为奇数的数据,中位数就是中间那个数; 对于数量为偶数的数据,中位数是中间两个数的平均值。 以下是SQL计算中位数的攻略: 方法一:使用SQL函数计算中位数 SQL函数包含一些针对特定数据类型的…

    database 2023年3月27日
    00
  • SQL Server游标的使用/关闭/释放/优化小结

    关于SQL Server游标的使用/关闭/释放/优化小结,我来为您详细讲解下。 什么是SQL Server游标 在SQL Server中,游标是一种临时的数据库对象,通过该对象可以一条一条地遍历查询结果。游标通常用于处理大量的数据集,例如,处理一张包含多条数据的表。 如何使用SQL Server游标 1. 定义游标 在SQL Server中,使用DECLAR…

    database 2023年5月19日
    00
  • SQLServer中用T—SQL命令查询一个数据库中有哪些表的sql语句

    要查询SQL Server数据库中的所有表,可以使用如下的T-SQL命令: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE=’BASE TABLE’ 该命令在 INFORMATION_SCHEMA 的 TABLES 视图中检索表名,并指定类型为‘BASE TABLE’的表。该…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部