1.JOIN和UNION区别
join 是两张表做交连后里面条件相同的部分记录产生一个记录集,
union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集 。
JOIN用于按照ON条件联接两个表,主要有四种:
INNER JOIN:内部联接两个表中的记录,仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。我理解的是只要记录不符合ON条件,就不会显示在结果集内。
LEFT JOIN / LEFT OUTER JOIN:外部联接两个表中的记录,并包含左表中的全部记录。如果左表的某记录在右表中没有匹配记录,则在相关联的结果集中右表的所有选择列表列均为空值。理解为即使不符合ON条件,左表中的记录也全部显示出来,且结果集中该类记录的右表字段为空值。
RIGHT JOIN / RIGHT OUTER JOIN:外部联接两个表中的记录,并包含右表中的全部记录。简单说就是和LEFT JOIN反过来。
FULL JOIN / FULL OUTER JOIN:完整外部联接返回左表和右表中的所有行。就是LEFT JOIN和RIGHT JOIN和合并,左右两表的数据都全部显示。
JOIN的基本语法:
Select table1.* FROM table1 JOIN table2 ON table1.id=table2.id
sql写法
内连接inner join:
SELECT msp.name, party.name
FROM msp JOIN party ON party=code
或
SELECT msp.name, party.name
FROM msp inner JOIN party ON party=code
左连接left join :
SELECT msp.name, party.name
FROM msp LEFT JOIN party ON party=code
右连接right join :
SELECT msp.name, party.name
FROM msp RIGHT JOIN party ON msp.party=party.code
全连接(full join):
SELECT msp.name, party.name
FROM msp FULL JOIN party ON msp.party=party.code
UNION运算符
将两个或更多查询的结果集组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。UNION的结果集列名与UNION运算符中第一个Select语句的结果集的列名相同。另一个Select语句的结果集列名将被忽略。
其中两种不同的用法是UNION和UNION ALL,区别在于UNION从结果集中删除重复的行。如果使用UNION ALL 将包含所有行并且将不删除重复的行。
UNION和UNION ALL的区别:
union 检查重复
union all 不做检查
比如 select 'a' union select 'a' 输出就是一行 a
比如 select 'a' union all select 'a' 输出就是两行 a
2. 通过下面的例子,可以清晰的看出和理解2者的区别
实例1 典型的二表连接演示
假定有两个表Table1和Table2,其包含的列和数据分别如表1.1和表1.2所示。
表1.1 Table1数据库表
ColumnA
|
ColumnB
|
ColumnC
|
X1
|
Y1
|
Z1
|
X2
|
Y2
|
Z2
|
X3
|
Y3
|
Z3
|
表1.2 Table2数据库表
ColumnA
|
ColumnD
|
ColumnE
|
X1
|
D1
|
E1
|
X2
|
D2
|
E2
|
X3
|
D3
|
E3
|
Table1和Table2表共有的列为ColumnA,如果通过ColumnA列的值连接Table1和Table2两个表,即连接条件为Table1.ColumnA=Table2.ColumnA,此时得到的连接结果如表1.3所示。
表1.3 连接Table1和Table2表
ColumnA
|
ColumnB
|
ColumnC
|
ColumnD
|
ColumnE
|
X1
|
Y1
|
Z1
|
D1
|
E1
|
X2
|
Y2
|
Z2
|
D2
|
E2
|
X3
|
Y3
|
Z3
|
D3
|
E3
|
上述连接过程的实现代码可表示如下:SELECT * FROM Table1 JOIN Table2 ON Table1.ColumnA=Table2.columnA
实例2 典型的二表记录的UNION运算
假定有两个表Table3和Table4,其包含的列和数据分别如表2.1和表2.2所示。
表2.1 Table3数据库表
ColumnA
|
ColumnB
|
ColumnC
|
X1
|
Y1
|
Z1
|
X2
|
Y2
|
Z2
|
X3
|
Y3
|
Z3
|
表2.2 Table4数据库表、
ColumnA
|
ColumnD
|
ColumnE
|
X4
|
Y4
|
Z4
|
X5
|
Y5
|
Z5
|
X6
|
Y6
|
Z6
|
Table3表和Table4表具有相同的列结构,列数也要相同,列名可以不同,以第一个表的列名为新表的列名,因此可以使用UNION运算符连接两个表的记录集,得到的连接结果如表2.3所示。
表2.3 使用UNION连接Table3表和Table4表的记录
ColumnA
|
ColumnB
|
ColumnC
|
X1
|
Y1
|
Z1
|
X2
|
Y2
|
Z2
|
X3
|
Y3
|
Z3
|
X4
|
Y4
|
Z4
|
X5
|
Y5
|
Z5
|
X6
|
Y6
|
Z6
|
上述连接过程的实现代码可表示如下:SELECT * FROM Table3 UNION SELECT *FROM Table4
对比实例1和实例2,不难发现二者的区别。
分享到:
相关推荐
在SQL中,JOIN和UNION是两种非常重要的操作,它们用于处理多个表的数据结合,但它们的作用和原理有所不同。 JOIN操作主要用于将两个或更多表的数据根据特定条件进行合并。JOIN有四种基本类型: 1. INNER JOIN(内...
在PL/SQL中,全连接可以通过UNION操作结合左连接和右连接来实现,但请注意,这并不完全等同于直接使用FULL OUTER JOIN,因为顺序可能影响结果列的标题。 示例: ``` SELECT * FROM a Aa FULL OUTER JOIN b Bb ON...
在这个PHP示例中,我们使用了预处理语句和绑定参数的方式,这样即使攻击者在输入中尝试插入SQL代码,由于这些代码不会被当作SQL语句的一部分执行,因此能够有效地防止SQL注入。 总结起来,防止SQL注入需要前端与...
在这个“sql常用语法及示例.zip”压缩包中,包含了一个名为“sql常用语法及示例.doc”的文档,它系统地介绍了SQL的基础和高级语法,以及多种函数方法,对于SQL初学者来说,是一份非常实用的学习资料。 首先,让我们...
结合使用`LEFT JOIN`和`UNION ALL`,我们可以构造一个复杂的查询,首先使用`LEFT JOIN`从文章表中获取数据,并关联到分类表以获取对应的分类名称,然后通过`UNION ALL`将不同条件下的查询结果整合在一起。...
MySQL 虽然没有内置的行转列和列转行函数,但通过 CASE、GROUP_CONCAT、UNION ALL 和 JOIN 等 SQL 语句,我们可以灵活地对数据进行转换,满足不同的数据分析需求。在实际应用中,应根据数据的特性和业务需求选择合适...
《T-SQL示例大全》是一个综合性的资源集合,涵盖了SQL语言中的Transact-SQL(T-SQL)的大量实例,适用于在Windows环境下使用SQL Server数据库管理系统进行开发和管理的人员。T-SQL是Microsoft SQL Server所扩展的...
本资源"Excel表中跨工作薄跨表实用SQL语句示例.zip"提供了相关教程和实例,帮助用户更好地理解和运用这一技能。 首先,SQL(Structured Query Language,结构化查询语言)是用于管理和处理关系数据库的标准语言。在...
在SQL语言中,`UNION`和`UNION ALL`是两种用于合并多个查询结果集的方法,它们在处理数据集合时扮演着重要角色。这里我们将深入探讨这两种操作符的使用和区别。 首先,`UNION`操作符用于合并两个或多个`SELECT`语句...
MySQL中的`UNION`和`JOIN`语句是两种用于合并数据的方法,它们在不同的场景下有着各自的优势和用途。本教程将详细讲解这两种语句的使用区别。 首先,`UNION`主要用于合并两个或多个SELECT查询的结果集,它会去除...
在SQL(Structured Query Language)中,查询数据是其核心功能之一。SQL2000作为较早的版本,虽然现在...在学习过程中,通过实践和练习是提高技能的关键,因此,查看并运行`各种查询方法.sql`文件中的示例将非常有益。
SQLQuery1.sql可能包含了各种基础到进阶的查询示例,如SELECT语句的使用,包括选择特定列、使用WHERE子句过滤数据、GROUP BY进行数据分组以及HAVING子句对分组后的数据进行过滤。可能还有JOIN操作,用于合并多个表的...
在LINQ to SQL 中,`Concat`、`Union`、`Intersect` 和 `Except` 是四个常用的集合操作符,它们用于处理两个数据源之间的关系,帮助开发者实现数据的合并、筛选和比较。 1. **Concat(连接)** - `Concat` 方法...
### SQL用法大全 SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准计算机语言。本文将根据提供的内容概要,详细介绍SQL的基础与进阶用法,包括创建与删除数据库、表的操作、索引与视图的管理...
本示例将深入探讨如何在SQL中处理这类数据,包括如何根据父节点查找所有子节点,以及如何指定子节点找出所有父节点。 首先,让我们假设有一个名为`employees`的表,它包含了员工的ID(`id`)、员工的名字(`name`)...
### 经典SQL语句大全含注解示例解析 #### 一、基础知识与操作 1. **创建数据库** - **SQL语句**: `CREATE DATABASE database-name;` - **说明**: 此命令用于创建一个新的数据库。`database-name`为用户自定义的...
在SQL(Structured Query Language)中,小计、合计与排序是数据分析和报表生成的重要操作。本文将详细解析如何使用SQL来实现这些功能。 首先,小计通常是指在某个特定分类或分组下的总和,而合计则是指所有数据的...
- **示例**:在 SQL Server 中添加一个备份设备。 ```sql USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'; ``` #### 备份数据库 - **语法**: ```sql BACKUP ...
- **定义**: `JOIN` 是用来从两个或多个表中获取数据的一种方法。 - **语法**: ```sql SELECT 字段1, 字段2, ... FROM 表1 INNER JOIN 表2 ON 表1.字段 = 表2.字段; ``` - **示例**: ```sql SELECT c.First_...