目录

  • 一、连接的介绍
    • 连接是什么?
    • 连接分几种?
      • 条件连接
      • 等值连接
      • 自然连接
  • 二、连接的使用
    • 内连接 INNER JOIN
      • 内连接与等值连接区别
      • 内连接与自然连接区别
    • 外连接 OUTER JOIN
      • 左连接 LEFT JOIN
      • 右连接 RIGHT JOIN
      • 全外连接 FULL JOIN
      • 外连接规则

一、连接的介绍

连接是什么?

连接(Join)是指将两个或多个表中的数据按照一定的条件关联起来,形成一个新的虚拟表。也可以理解为两个表的笛卡尔积中筛选符合条件的行。

什么是笛卡尔积?

图中名词解析:
元素:集合中{d1,d2},每一个值称为一个元素,如:d1是一个元素;在表中表示每一行;
元组:一个元素就是一个元组,所以集合{d1,d2}中有2个元组,一个元组在数据表中指的是一行数据;
分量:一个元组里的每一个值,如:元组d1的数据是[张三,24,湖北],那么张三就是一个分量;
:每一列数据称为一个域,如:元组d1的数据是[张三,24,湖北],元组d2的数据是[李三,25,湖南],那么 张三,李三 就是一个域;

连接分几种?

三种类型:条件连接、等值连接、自然连接

条件连接

条件连接又称为θ连接
定义:多个表的笛卡尔积中选取满足条件的行的连接(定义和连接定义一样,连接不分家)
举例:select * from R,S where R.A < S.B 有条件的查询
1.现将R和S的笛卡尔积列出(R x S 中的x是笛卡尔积的集合运算符)

2.筛选出符合R.A < S.B的条件的行,除去圈出的部分其余都是符合R.A < S.B条件,即生成一张新的虚拟表(⋈表示连接运算符)

等值连接

等值连接又称为逗号连接
定义:特殊的条件连接,当条件连接的条件为“=”时,称为等值连接
举例:

select * from R,S where R.A = S.A

如图中圈出的两行则是SQL查询出来的数据

自然连接

定义:特殊的等值连接,要求多个表有相同的属性字段,条件为相同的属性字段值相等,且再将表中重复的属性字段去掉,称为自然连接。
举例:

-- natural join:自然连接,不允许带on/using
select * from R natural join S
--上语句等价于下语句
select R.A,R.B,R.C,S.D where R.A = S.A and R.C = S.C

二、连接的使用

通过上述对连接的介绍,可以看出常使用的内连接、左连接、右连接等都是条件连接的衍生,下面具体看看它们之间的差别及使用。

内连接 INNER JOIN

内连接可以称为自然连接、等值连接
内连接定义:从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。(对比外连接后就能明白了)

内连接的语法如下:

select fieldlist from table1 [inner] join table2 on table1.column=table2.column

内连接与等值连接区别

看定义和语法,是否和等值连接是那么一会事儿,其实是一回事情(等效)可以查看:https://blog.csdn.net/huanghanqian/article/details/52847835

等值连接一般用where字句设置条件,内连接一般用on字句设置条件,但内连接与等值连接效果是相同的。

内连接与自然连接区别

内连接与自然连接基本相同,不同之处在于自然连接只能是同名属性的等值连接,而内连接可以使用using或on子句来指定连接条件,连接条件中指出某两字段相等(可以不同名)。

外连接 OUTER JOIN

定义:外连接的作用是将关联查询中不满足关联条件的记录显示在结果集中。(内连接会丢失部分信息,外连接则补缺丢失部分信息)
通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。

以下是原始表

左连接 LEFT JOIN

运算符为:⋊
左外连接是将LEFT JOIN 左侧的表作为主表,结果集中会包含该表所有满足过滤条件的记录,当来自于LEFT JOIN 右侧表的字段时,不满足连接条件的记录值全为NULL。
举例:

select * from table1 left join table2 on table1.c=table2.c

结果:

右连接 RIGHT JOIN

运算符为:⋉
右外连接是RIGHT JOIN 右侧的表作为主表,结果集中会包含该表所有满足过滤条件的记录,当来自于RIGHT JOIN 左侧表的字段时,不满足连接条件的记录值全为NULL。
举例:

select * from table1 right join table2 on table1.c=table2.c

结果:

全外连接 FULL JOIN

将左连接与右连接并集,可以达到全连接效果,UNION取并集
举例:

select * from table1 full join table2 on table1.c=table2.c
-- 使用union的方式写则是
select * from table1 left join table2 on table1.c=table2.c
union
select * from table1 right join table2 on table1.c=table2.c

结果:

外连接规则

左连右补,右连左补,全连左右合并
菜鸟教程的图解

SQL连接的理解和使用(内连接:自然连接等值连接,外连接:左连接右连接全外连接)相关推荐

  1. 数据库内、外、左、右连接详解

    写在前面: 数据库连接操作非常重要,明确连接操作有助于更好地掌握SQL语句查询操作. 数据库连表方式: 内连接 :inner join 外连接 :outer join 左外连接 :left outer ...

  2. oracle 内关联,左外关联,右外关联,全外关联

    创建表一USER_TABLE,表二WORKS_LIST CREATE TABLE USER_TABLE( USER_ID NUMBER(10), USER_NAME VARCHAR2(10), USE ...

  3. 【MySQL】MySQL 的连接(内、左、右、全)

    一.表 的连 结 1.目的:减少数据的冗余 2.核心:分类 ***连接时至少要两张表,连接主要有内连接(inner join).左外连接(left outer join).右外连接(right out ...

  4. SQL的内连接、左连接、右连接、 交叉连接、全外连接

    sql表连接分成 外连接 . 内连接 和 交叉连接.. 外连接包括三种,分别是左外连接.右外连接.全外连接.. 对应的sql关键字:LEFT/RIGHT/FULL OUTER JOIN,通常我们都省略 ...

  5. Oracle:左连接、右连接、全外连接、(+)号详解

    目录 Oracle 左连接.右连接.全外连接.(+)号详解 1.左外连接(LEFT OUTER JOIN/ LEFT JOIN) 2.右外连接(RIGHT OUTER JOIN/RIGHT JOIN) ...

  6. sql语句的内连接、左外连接、右外连接的理解

    sql语句 内连接.左外连接.右外连接的理解 大家在初学数据库时,对DQL中的连接查询是否有些疑惑,不知道什么时候什么场景下该用那种连接查询? 不要着急,接下来由我来给大家介绍一下,本人对内连接.左外 ...

  7. 数据库之SQL(基本连接,内连接,左外连接,右外连接,全外连接,交叉连接,自连接)

    之前的博客内容我们分享了数据表的查询与管理,但那只是针对数据库中的一个表格进行的查询管理,现在如果我们想要同时看到两个数据表中的数据的话,那要怎么办呢?采用多连接查询的方式. SQL中有哪几种多连接的 ...

  8. SQL中左连接和右连接的理解误区

    SQL中左连接和右连接的理解误区: 1.左右外连接中,怎么区分哪个表当左表,哪个表当右表? 2.什么时候用左连接,什么时候用右连接? 首先,重新捋一遍二者概念: 左连接的语法:select 列名 fr ...

  9. SQL中的连接(左、右、内连接)

    目录 左连接(LEFT JOIN或LEFT OUTER JOIN): 右连接(RIGHT JOIN或RIGHT OUTER JOIN): 内连接(INNER JOIN也叫等值连接): 全连接(FULL ...

最新文章

  1. 2018年科技公司融资纪录十大排行榜!中国四家公司上榜
  2. python简单编程语言_功能强大而又简单易学的编程语言Python
  3. 视频台词现在不用背也不用配,连对口型都免了
  4. python将csv一行保存一个txt_Python读写文件(csv、txt、excel)
  5. php四种基础算法:冒泡,选择,插入和快速排序法
  6. 项目测试基础:白盒测试相关知识笔记
  7. 信息学奥赛一本通C++语言——1083:计算星期几
  8. java演练 谁在哪里做什么 文字小游戏开发
  9. CVPR 2021 | 基于随机标签的神经架构搜索
  10. 大数据workshop:《在线用户行为分析:基于流式计算的数据处理及应用》之《实时数据分析:海量日志数据多维透视》篇...
  11. 超级简单:如何列出目录下所有文件的超链接
  12. vue组件中传值遇到的一些问题
  13. 深入浅出的mysql第三版和第二版的区别_深入浅出mysql和高性能mysql哪本好
  14. 沉睡者IT - 月赚几千的创业项目思路,抖音文案号网赚项目
  15. windows下文件名太长无法删除的问题
  16. 个人小程序开发有哪些限制?
  17. 计算机接口盒,将小米盒连接到旧的计算机显示器(VGA接口)
  18. 如何用控制面板打开计算机配置,如何查看电脑的配置?学会下面几种方法,你就可以自己看电脑配置...
  19. Kafka KSQL
  20. 货郎担问题(TSP)

热门文章

  1. html带复选框的表格,Html 表格行 ID 复选框
  2. CheckBoxList复选框例子
  3. 【华为OJ】【067-求最小公倍数】
  4. intell idea怎么恢复默认设置
  5. MySQL 数据库连接
  6. 11075 强盗分赃
  7. nonebot,cqhttp 机器人学习1
  8. 一键卸载Ubuntu的火狐浏览器
  9. 【Hadoop快速入门】Hdfs、MapReduce、Yarn
  10. 带宽、峰值带宽,网速是什么,它们有什么关系?