`
guohf
  • 浏览: 417686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL中JOIN和UNION区别、用法及示例

阅读更多

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区别、用法及示例介绍

    在SQL中,JOIN和UNION是两种非常重要的操作,它们用于处理多个表的数据结合,但它们的作用和原理有所不同。 JOIN操作主要用于将两个或更多表的数据根据特定条件进行合并。JOIN有四种基本类型: 1. INNER JOIN(内...

    PL/SQL Join实例分析

    在PL/SQL中,全连接可以通过UNION操作结合左连接和右连接来实现,但请注意,这并不完全等同于直接使用FULL OUTER JOIN,因为顺序可能影响结果列的标题。 示例: ``` SELECT * FROM a Aa FULL OUTER JOIN b Bb ON...

    JS代码防止SQL注入的方法(超简单)

    在这个PHP示例中,我们使用了预处理语句和绑定参数的方式,这样即使攻击者在输入中尝试插入SQL代码,由于这些代码不会被当作SQL语句的一部分执行,因此能够有效地防止SQL注入。 总结起来,防止SQL注入需要前端与...

    sql常用语法及示例.zip

    在这个“sql常用语法及示例.zip”压缩包中,包含了一个名为“sql常用语法及示例.doc”的文档,它系统地介绍了SQL的基础和高级语法,以及多种函数方法,对于SQL初学者来说,是一份非常实用的学习资料。 首先,让我们...

    mysql_adv_select.rar_any left join_union

    结合使用`LEFT JOIN`和`UNION ALL`,我们可以构造一个复杂的查询,首先使用`LEFT JOIN`从文章表中获取数据,并关联到分类表以获取对应的分类名称,然后通过`UNION ALL`将不同条件下的查询结果整合在一起。...

    Mysql 行转列,列转行 SQL语句和示例表结构SQL

    MySQL 虽然没有内置的行转列和列转行函数,但通过 CASE、GROUP_CONCAT、UNION ALL 和 JOIN 等 SQL 语句,我们可以灵活地对数据进行转换,满足不同的数据分析需求。在实际应用中,应根据数据的特性和业务需求选择合适...

    T-SQL示例大全.rar_sql_t-sql_windows sql

    《T-SQL示例大全》是一个综合性的资源集合,涵盖了SQL语言中的Transact-SQL(T-SQL)的大量实例,适用于在Windows环境下使用SQL Server数据库管理系统进行开发和管理的人员。T-SQL是Microsoft SQL Server所扩展的...

    Excel表中跨工作薄跨表实用SQL语句示例.zip

    本资源"Excel表中跨工作薄跨表实用SQL语句示例.zip"提供了相关教程和实例,帮助用户更好地理解和运用这一技能。 首先,SQL(Structured Query Language,结构化查询语言)是用于管理和处理关系数据库的标准语言。在...

    SQL语句之Union和Union All的用法

    在SQL语言中,`UNION`和`UNION ALL`是两种用于合并多个查询结果集的方法,它们在处理数据集合时扮演着重要角色。这里我们将深入探讨这两种操作符的使用和区别。 首先,`UNION`操作符用于合并两个或多个`SELECT`语句...

    MySQL中union和join语句使用区别的辨析教程

    MySQL中的`UNION`和`JOIN`语句是两种用于合并数据的方法,它们在不同的场景下有着各自的优势和用途。本教程将详细讲解这两种语句的使用区别。 首先,`UNION`主要用于合并两个或多个SELECT查询的结果集,它会去除...

    SQL各种查询方法

    在SQL(Structured Query Language)中,查询数据是其核心功能之一。SQL2000作为较早的版本,虽然现在...在学习过程中,通过实践和练习是提高技能的关键,因此,查看并运行`各种查询方法.sql`文件中的示例将非常有益。

    SQL代码 sql练习

    SQLQuery1.sql可能包含了各种基础到进阶的查询示例,如SELECT语句的使用,包括选择特定列、使用WHERE子句过滤数据、GROUP BY进行数据分组以及HAVING子句对分组后的数据进行过滤。可能还有JOIN操作,用于合并多个表的...

    Linq To Sql Concat Union Intersect Except

    在LINQ to SQL 中,`Concat`、`Union`、`Intersect` 和 `Except` 是四个常用的集合操作符,它们用于处理两个数据源之间的关系,帮助开发者实现数据的合并、筛选和比较。 1. **Concat(连接)** - `Concat` 方法...

    sql用法大全,包含sql多种基本用法

    ### SQL用法大全 SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准计算机语言。本文将根据提供的内容概要,详细介绍SQL的基础与进阶用法,包括创建与删除数据库、表的操作、索引与视图的管理...

    sql树形数据处理示例

    本示例将深入探讨如何在SQL中处理这类数据,包括如何根据父节点查找所有子节点,以及如何指定子节点找出所有父节点。 首先,让我们假设有一个名为`employees`的表,它包含了员工的ID(`id`)、员工的名字(`name`)...

    经典SQL语句大全 含注解示例

    ### 经典SQL语句大全含注解示例解析 #### 一、基础知识与操作 1. **创建数据库** - **SQL语句**: `CREATE DATABASE database-name;` - **说明**: 此命令用于创建一个新的数据库。`database-name`为用户自定义的...

    使用SQL实现小计,合计以及排序

    在SQL(Structured Query Language)中,小计、合计与排序是数据分析和报表生成的重要操作。本文将详细解析如何使用SQL来实现这些功能。 首先,小计通常是指在某个特定分类或分组下的总和,而合计则是指所有数据的...

    SQL,SQL操作大全

    - **示例**:在 SQL Server 中添加一个备份设备。 ```sql USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'; ``` #### 备份数据库 - **语法**: ```sql BACKUP ...

    sql 语句汇总详解

    - **定义**: `JOIN` 是用来从两个或多个表中获取数据的一种方法。 - **语法**: ```sql SELECT 字段1, 字段2, ... FROM 表1 INNER JOIN 表2 ON 表1.字段 = 表2.字段; ``` - **示例**: ```sql SELECT c.First_...

Global site tag (gtag.js) - Google Analytics