• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > SQL中JOIN和UNION区别、用法及示例介绍

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了JOIN,UNION等相关知识,希望本文的分享对您有所帮助

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数据库表

表1.2 Table2数据库表

Table1和Table2表共有的列为ColumnA,如果通过ColumnA列的值连接Table1和Table2两个表,即连接条件为Table1.ColumnA=Table2.ColumnA,此时得到的连接结果如表1.3所示。

表1.3 连接Table1和Table2表

上述连接过程的实现代码可表示如下:SELECT * FROM Table1 JOIN Table2 ON Table1.ColumnA=Table2.columnA

实例2 典型的二表记录的UNION运算

假定有两个表Table3和Table4,其包含的列和数据分别如表2.1和表2.2所示。

表2.1 Table3数据库表

表2.2 Table4数据库表、

Table3表和Table4表具有相同的列结构,列数也要相同,列名可以不同,以第一个表的列名为新表的列名,因此可以使用UNION运算符连接两个表的记录集,得到的连接结果如表2.3所示。

表2.3 使用UNION连接Table3表和Table4表的记录

上述连接过程的实现代码可表示如下:SELECT * FROM Table3 UNION SELECT *FROM Table4

对比实例1和实例2,不难发现二者的区别。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Mysql跨表更新 多表update sql语句总结
  • 深入理解mysql之left join 使用详解
  • mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录
  • mysql多表join时候update更新数据的方法
  • MySQL JOIN之完全用法
  • 超详细mysql left join,right join,inner join用法分析
  • Mysql中的join操作实例分享
  • MySQL中关于Join的使用示例分享
  • sql中用JOIN USING如何简化JOIN ON的实例
  • Mysql中关于连接(join)查询详解

相关文章

  • 2018-12-05oracle中的视图详解
  • 2017-08-22MySQL5.6的10053,CBO如何选择执行计划
  • 2017-05-11MYSQL 没有完全卸载将导致其安装不成功
  • 2018-12-05jQuery操作第N个元素的方法
  • 2017-05-11C# Mysql 查询 Rownum的解决方法
  • 2018-12-05关于数值函数的10篇文章推荐
  • 2017-05-11在MySQL中使用序列的简单教程
  • 2018-12-05Centos7如何利用yum安装Mysql5.7.19的具体方法
  • 2018-12-05如何使用mysql语句创建联结
  • 2017-05-11使用use index优化sql查询的详细介绍

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 如何强制删除或恢复SQLServer正在使用的数据库
    • SQL学习笔记八 索引,表连接,子查询,ROW_NUMBER
    • MySQL常用命令大全脚本之家总结
    • MySQL中对于not in和minus使用的优化
    • 使用navicat 8实现创建数据库和导入数据 管理用户与权限[图文方
    • PL/SQL实现Oracle数据库任务调度
    • MYSQL批量插入数据如何优化的方法介绍
    • 数据表增删改操作的图文详解(phpMyAdmin的使用教程2)
    • 分享一个MySQL死锁问题解决的方法
    • mysql启用skip-name-resolve模式时出现Warning的处理办法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有