MySQL Union和Join区别
Union和Join是 SQL 用于在关系数据库管理系统(RDBMS)中的多个表上执行操作的子句。它们通过
合并两个或多个表中的数据来产生结果。但是,两个子句中组合来自两个或多个关系的数据的方式不同。在进行比较之前,我们将简要讨论这些条款。
Union规范
MySQL Union子句允许我们使用多个SELECT查询将两个或多个关系组合到单个结果集中。默认情况下,它具有从结果集中删除重复行的功能。
MySQL 中的Union子句必须遵循以下规则:
所有表中列的顺序和数量必须相同。
数据类型必须与每个选择查询的相应位置兼容。
SELECT查询中的列名应具有相同的顺序。
语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2;
什么是Join子句?
加入MySQL 与 SELECT语句一起使用,以
从多个表中检索数据。每当我们需要从多个表中获取记录时,都会执行该操作。它仅返回表中符合指定条件的那些记录。
语法
SELECT column_name(s) FROM table_name1
JOIN table_name2 ON conditions;
联合与加入
让我们讨论联合与加入之间的本质区别使用以下比较表。
UNION |
Join |
它用于使用SQL查询合并来自多个表的结果。 |
它用于使用SQL查询从多个表中获取记录。 |
它将记录合并到新行中。 |
它将记录合并到新列中。 |
它允许我们垂直连接桌子。 |
这将使我们能够垂直连接表。 |
它作为一个以上汇总所有记录的表的结合。 |
它在表格的交集处产生结果。 |
在这种情况下,所有表中列的顺序和数量必须相同。 |
在这种情况下,列的顺序和数目不必在所有表中都相同。 |
它具有默认功能,可从结果集中删除重复的行。 |
它不会从结果集中消除重复的行。 |
在这种情况下,所有SELECT语句中的数据类型都必须相同。 |
在这种情况下,不必具有相同的数据类型。可以不同。 |
仅当列数和相应属性具有相同域时,Union子句才适用。 |
仅当将要使用的两个表至少具有一列时,Join子句才适用。 |
Union子句可以主要具有以下两种类型: Union Union All |
Join子句可以具有以下给出的不同类型: Inner Join Left Join Right Join Full Join |
现在,我们将借助示例来理解它。
联合示例
假设我们的数据库具有以下表:
" Student1" 和
" Student2" ,其中包含以下数据:
下面的语句通过组合两个表,产生包含所有学生姓名和学科的输出。
SELECT stud_name, subject FROM student1
UNION
SELECT stud_name, subject FROM student2;
成功执行后,我们将获得包含所有唯一学生姓名和科目的输出:
Join示例
假设我们的数据库具有以下表格:
"students" 和
"technologies" 包含以下数据:
我们可以使用以下查询从两个表中获取记录:
SELECT students.stud_fname, students.stud_lname, students.city, technologies.technology
FROM students
JOIN technologies
ON students.student_id = technologies.tech_id;
我们将获得以下输出: