MySQL Union和Join的区别

MySQL Union和Join的区别

Union和Join是在关系数据库管理系统(RDBMS)中用于对多个表执行操作的SQL子句。它们通过将两个或多个表中的数据 组合 起来产生结果。但是,在组合两个或多个关系中的数据方面,这两个子句的方式不同。在进行比较之前,我们将简要讨论这些子句。

Union子句是什么?

MySQL的Union子句允许我们使用多个SELECT查询将两个或多个关系合并为一个结果集。默认情况下,它具有从结果集中删除重复行的功能。

MySQL中的Union子句必须遵循以下规则:

  • 所有表中的列的顺序和数量必须相同。
  • 数据类型必须与每个SELECT查询的相应位置兼容。
  • SELECT查询中的列名应该按照相同的顺序排列。

语法

SELECT column_name(s) FROM table_name1  
UNION  
SELECT column_name(s) FROM table_name2;

什么是Join子句?

在MySQL中使用Join 与 SELECT语句 一起用于从多个表中检索数据。每当我们需要从多个表中获取记录时,就会执行此操作。它仅返回与指定条件匹配的这些表中的记录。

语法

SELECT column_name(s) FROM table_name1   
JOIN table_name2  ON conditions;

Union vs. Join

让我们通过以下对比图表来讨论联合(Union)和连接(Join)之间的基本区别。

MySQL Union和Join的区别

SN UNION JOIN
1. 用于使用 SQL 查询组合多个表的结果。 用于使用 SQL 查询从多个表中获取记录。
2. 将记录合并为新行。 将记录合并为新列。
3. 允许我们在垂直方向上连接表格。 允许我们在垂直方向上连接表格。
4. 作为对多个表的连接的连接词,总结所有记录。 产生表之间的交集结果。
5. 在此,所有表中的列的顺序和数量必须相同。 在此,所有表中的列的顺序和数量不需要相同。
6. 它具有从结果集中删除重复行的默认功能。 它不会从结果集中消除重复行。
7. 在此,所有 SELECT 语句中的数据类型必须相同。 在此,不需要相同的数据类型。它可以是不同的。
8. Union 子句仅在列数和对应属性的域相同时适用。 Join 子句仅在将要使用的两个表至少有一列时适用。
9. Union 子句可以有以下两种类型:Union 和Union All Join 子句可以有以下不同类型:
Inner Join (有时称为 Join)
Left Join (Left Outer Join)
Right Join (Right Outer Join)
Full Join (Outer Join)

现在,我们将通过一个示例来理解它。

Union 示例

假设我们的数据库中有以下表: “Student1”“Student2” 包含以下数据:

MySQL Union和Join的区别

下面的语句将两张表合并,并产生包含所有学生姓名和科目的输出。

SELECT stud_name, subject FROM student1  
UNION  
SELECT stud_name, subject FROM student2;  

执行成功后,我们将得到一个包含所有唯一学生姓名和科目的输出:

MySQL Union和Join的区别

Join 示例

假设我们的数据库有以下表格: “students”“technologies” 包含以下数据:

MySQL Union和Join的区别

我们可以使用以下查询从两个表中提取记录:

SELECT students.stud_fname, students.stud_lname, students.city, technologies.technology    
FROM students   
JOIN technologies    
ON students.student_id = technologies.tech_id;

我们将得到以下输出:

MySQL Union和Join的区别

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程