`

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

    博客分类:
  • sql
 
阅读更多

转载:http://www.jb51.net/article/30975.htm

 

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,不难发现二者的区别。

 

分享到:
评论

相关推荐

    PL/SQL Join实例分析

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

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

    本文主要介绍了如何使用JavaScript代码来防止SQL注入,这是为了保证Web应用的安全性,防止恶意用户通过输入特定的SQL语句来破坏数据库。文章从两个方面进行了说明,包括URL地址防注入和输入文本框防注入。 首先,...

    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,结构化查询语言)是用于管理和处理关系数据库的标准语言。在...

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

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

    SQL语句之Union和Union All的用法

    在SQL语言中,`UNION`和`UNION ALL`是两种用于合并多个查询结果集的方法,它们在处理数据集合时扮演着重要角色。这里我们将深入探讨这两种操作符的使用和区别。 首先,`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的基础与进阶用法,包括创建与删除数据库、表的操作、索引与视图的管理以及常用的查询语句等。 #### 一、创建与删除数据库 1. **创建数据库** - **语法**: `CREATE ...

    Proc SQL by Example, Using SQL within SAS

    综述了三种主要的集合操作符——UNION、INTERSECT和EXCEPT的特性和使用方法,并举例说明了它们各自的应用场景。 #### 6.6 UNION 深入探讨了UNION操作符的功能和使用技巧,包括如何使用UNION来合并多个查询结果集。...

    sql树形数据处理示例

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

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

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

    sql常用语句以及函数

    ### SQL 常用语句及函数详解 #### 一、WHERE 条件 `WHERE` 子句用于在 `SELECT` 语句中过滤记录。...以上是 SQL 中常用的语句和函数的一些基本介绍和示例。通过这些工具,你可以高效地管理数据库中的数据。

    SQL,SQL操作大全

    根据给定的信息,本文将对SQL操作大全进行详细介绍,包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)等几个方面,并结合实例进行讲解。 ### 数据定义语言(DDL) #### 创建数据库 - **语法**...

Global site tag (gtag.js) - Google Analytics