交叉连接、内连接和外连接的区别及使用方式

一、交叉连接、内连接、外连接的区别

  • 交叉连接又叫’笛卡尔积’,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配。
  • 内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行 。
  • 外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接

二、交叉连接

1. 并集 union

  • UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行
  • 同时,每条 SELECT 语句中的列的顺序必须相同,而且也要具有相同的数据类型,列的数量也必须相同。如果不想去掉重复的行,可以使用union all
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2. 交集 join

在这里插入图片描述

3. 差集 not

  • 假设有集合A和B,所有属于A且不属于B的元素的集合被称为A与B的差集。
    示例:对于集合A = {a, b, c, d}和集合B = {b, c, w},则A与B 的差集为{a, d}
    在这里插入图片描述

4.笛卡尔积 CROSS JOIN

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、内连接

1. 等值连接inner join(不去重)

在这里插入图片描述

  • select语句先看的是from语句,因为from后的表起别名的话,where子句可以用,而select语句执行又在where子句之后。
    在这里插入图片描述

2. 自然连接 natural join

在这里插入图片描述

3. 不等连接

  • select * from A INNER JOIN B on A.col>B.col;

四、外连接

1. 左外连接

在这里插入图片描述

2. 右外连接

在这里插入图片描述

3. 全外连接

  • mysql没有专门提供一个全外连接的关键字,需要使用union关键字在这里插入图片描述
发布了84 篇原创文章 · 获赞 90 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42512488/article/details/99442975
今日推荐