数据库中的内连接、自然连接、外连接

注意:mysql不支持全外连接,using和on的区别在于需要连接的两个表的属性名相同的时候使用using和on效果一样,而属性名不同的时候必须使用on

数据库中的连接join分为内连接、自然连接、外连接,外连接又分为左外连接、右外连接、全外连接。
table1:

table2:

当然,这些分类都是在连接的基础上,是从两个表中记录的笛卡尔积中选取满足连接的记录。笛卡尔积简单的说就是一个表里的记录要分别和另外一个表的记录匹配为一条记录,即如果表A有2条记录,表B也有2条记录,经过笛卡尔运算之后就应该有2*2即4条记录。如下表:

1. 自然连接(natural join)

自然连接是一种特殊的等值连接,他要求两个关系表中进行连接的必须是相同的属性列(名字相同),无须添加连接条件,并且在结果中消除重复的属性列。

 Select * from table1 natural join table2

结果:

2. 内连接(inner join ,inner可省略 )

内连接基本与自然连接相同,不同之处在于自然连接的是同名属性列的连接,而内连接则不要求两属性列同名,可以用using或on来指定某两列字段相同的连接条件。

 Select * from table1 inner join table2 on table1.A=table2.E

结果:

自然连接时某些属性值不同则会导致这些元组会被舍弃,那如何保存这些会被丢失的信息呢,外连接就解决了相应的问题。外连接分为左外连接、右外连接、全外连接。外连接必须用using或on指定连接条件。

3.1左外连接(left outer join,outer可以省略)

左外连接是在两表进行自然连接,只把左表要舍弃的保留在结果集中,右表对应的列上填null。

  Select * from table1 left outer join table2 on table1.C=table2.C

结果:

3.2右外连接(rignt outer join,outer可以省略)

右外连接是在两表进行自然连接,只把右表要舍弃的保留在结果集中,左表对应的列上填null。

 Select * from table1 right outer join table2 on table1.C=table2.C

结果:

3.3全外连接(full outer join outer可以省略 )(mysql不支持)

全外连接是在两表进行自然连接,只把左表和右表要舍弃的都保留在结果集中,相对应的列上填null。

# 由于博主本机没有安装oracle所以没有验证第一句sql的正确性Select * from table1 full join table2 on table1.C=table2.C

mysql的全外连接可以使用union关键将左连接和右链接的结果合并

 Select * from table1 left outer join table2 on table1.C=table2.CUNION Select * from table1 right outer join table2 on table1.C=table2.C

结果:

mysql 内连接、自然连接、外连接的区别相关推荐

  1. MySQL 学习笔记(15)— 连接查询(内连接、左外连接、右外连接、全外连接、交叉连接、自然连接等)

    本文参考:https://gitbook.cn/gitchat/column/undefined/topic/5db92b68a9c3a53bc3800eff SQL 支持的连接查询包括内连接.外连接 ...

  2. Mysql数据库基本操作(六)多表查询-内连接查询,外连接查询

    数据准备 use mydb3 ; --创建部门表 create table if not exists dept3 ( deptno varchar (20) primary key , --部门号 ...

  3. 内连接(等值、非等值连接)、外连接(左外连接、右外连接、全连接)、自然连接、自连接

    目录 一.交叉连接(笛卡尔积) 二.内连接(等值.非等值连接) 三.外连接(左外连接.右外连接.全连接) 四.自然连接 五.自连接 一.交叉连接(笛卡尔积) 交叉联接返回左表中的所有行,左表中的每一行 ...

  4. mysql 多表既有内连接又有外连接_MySQL 多表查询中的内连接和外连接

    一般情况下一个网站的数据库通常会有多张数据表组成,这些数据表分别存储网站不同区域的内容.数据表之间可以用类似 ID 的字段来关联,在查询的时候可以通过一条语句来查询多张表的内容.例如 论坛的数据库,帖 ...

  5. 4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  6. 数据库表连接总结:等值连接, 自然连接,左外连接,右外连接,内连接,全外连接;

    [1]等值连接 1)连接:凡是查询涉及到两个以上的表,就需要将表连接: 2)就是用where子句做的连接查询:连接查询的列名可以不同: [2]自然连接: select * from  a_tbl na ...

  7. mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...

     mysql数据库创建,表创建模等模板脚本 --用root用户登录系统,执行脚本 --创建数据库 create database mydb61 character set utf8 ; --选择数 ...

  8. MySQL内连接、左外连接、右外连接

    MySQL 中的内连接.左外连接和右外连接是用于连接两个或多个表的不同方式,它们之间的区别如下: 内连接(Inner Join):内连接也称为等值连接,只返回两个表中键值匹配的行,即只有在两个表中都有 ...

  9. SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)

    目录 一.连接的介绍 连接是什么? 连接分几种? 条件连接 等值连接 自然连接 二.连接的使用 内连接 INNER JOIN 内连接与等值连接区别 内连接与自然连接区别 外连接 OUTER JOIN ...

  10. 第四章 SQL查询 之连接{自然连接,内连接,外连接(左外连接,右外连接,完全连接)}

    4.4 连接 自然连接 自然连接实际指定了搜寻条件.这里包括两部分的内容:首先,自然连接列必须同名,另外,所有同名列都将作为搜索条件. 自然连接所使用的关键字为natural join .其连接原则为 ...

最新文章

  1. 周志华教授发表首届国际学习与推理联合大会IJCLR开场Keynote:探索从纯学习到学习+推理的AI...
  2. 送你一份机器/深度学习自学指南(附视频amp;速成方案)
  3. python php 通信,Python和php通信乱码问题解决方法
  4. n数码问题,全排列的hash(转载
  5. SparkSQL概述
  6. Scala具体解释---------Scala是什么?可伸展的语言!
  7. 学习手记(2018.11.30~2019.6.6)——养老时间
  8. hive相关操作语句
  9. 解决Error: Protected multilib versions:
  10. Docker的网络配置:创建网桥
  11. C++11 decltype
  12. python自动化要学全部基础知识_FishC工作室《零基础学习python》全套课后题
  13. 使用广义α方法(the generalized-α method)求解时变动力学问题
  14. 计算机视觉论文-2021-07-20
  15. 【训练题36:数学】斐波那契各项幂次前缀和 | ZOJ 3774
  16. 华为的冬天----任正非
  17. Anker—学习成长笔记
  18. 仿微信九宫格群聊view
  19. 无社交,不创业:2017松松兄弟上海聚会剧透
  20. sin傅里叶变换公式_全面解析傅立叶变换(非常详细)

热门文章

  1. Benchmark tool library for c++ code
  2. 多元统计分析——多元线性回归
  3. 基于BP神经网络模型在matlab上实现对中国每年出生人口数量的预测
  4. 电气工程学python_浅谈如何学习电气工程及其自动化专业
  5. Foobar2000中文版增强安装版
  6. 生物信息服务器集群,IBM刀片服务器集群推动生物信息研究
  7. postgresql mysql数据类型_postgresql+java数据类型对照
  8. 织梦采集插件,无需采集规则,补损值
  9. 万年历插件软件测试,中华万年历app测试用例.xls
  10. 计算机启动时默认输入法设置,电脑开机输入法设置 开机默认输入法设置教程...