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

一、连接的介绍

连接是什么?

连接(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

结果:
左连接 LEFT JOIN

右连接 RIGHT JOIN

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

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

结果:
右连接 RIGHT JOIN

全外连接 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

结果:
全外连接 FULL JOIN

外连接规则

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

### 回答1: 自然连接等值连接内连接数据库中常见的连接操作。 自然连接是基于两个或多个表中共同的列名进行连接操作,通过这些共同的列名,将表中的记录进行匹配,并将匹配成功的记录连接起来。自然连接会自动匹配两个表中相同列名的记录,并返回连接结果。例如,有两张表A和B,它们分别有一个列名为"ID"的列,自然连接操作会自动匹配这两个表中"ID"列相同的记录,并将匹配成功的记录连接起来。 等值连接是通过指定两个表之间的等值条件来连接它们的记录。等值连接操作会通过指定的等值条件,将满足条件的记录进行连接。例如,有两张表A和B,它们分别有一个列名为"ID"的列,等值连接操作可以通过指定"ID"列的等值条件,将满足条件的记录连接起来。 内连接是通过指定的条件将两个表中的记录进行匹配,并返回匹配成功的记录。内连接操作会根据指定的条件,从两个表中选取满足条件的记录进行连接内连接可以通过等值连接、不等值连接等方式进行匹配。例如,有两张表A和B,通过内连接操作,可以根据指定的条件从表A和表B中选取满足条件的记录进行连接。 以上,就是自然连接等值连接内连接的基本概念和操作方式的介绍。 ### 回答2: 自然连接等值连接内连接是在数据库中进行数据查询和连接的三种常见方式。 自然连接是根据两个或多个表中具有相同列名的列进行连接。它会自动匹配这些相同列名的值,并返回匹配的结果。例如,如果有两个表A和B,它们都有一个名为ID的列,那么自然连接会返回在A和B中ID列值相同的所有行。 等值连接是通过一个或多个相等条件将两个或多个表中的数据连接起来。这些相等条件可以基于相同的列名或者其他条件。例如,如果有两个表A和B,它们都有一个名为ID的列,那么等值连接可以通过ID这一列将A和B中具有相同ID值的行连接起来。 内连接是根据一个或多个相等条件将两个或多个表中匹配的行连接起来,并返回匹配的结果。内连接有时也被称为等值连接或者交集连接。它只返回那些在连接条件中匹配的行,而不包含其他行。例如,如果有两个表A和B,通过某个列名将它们连接起来,内连接会返回那些在A和B中具有相同列名值的行。 总结起来,自然连接等值连接内连接都是用于在数据库连接表并返回匹配的结果的操作。它们的主要区别在于连接的依据和返回的结果的不同。 ### 回答3: 自然连接是一种关系型数据库中的连接操作,它通过比较两个表之间的所有共同列,筛选出这些列的值完相等的行,并将这些行连接起来形成一个新的表。在自然连接中,如果两个表有多个共同列,那么所有这些共同列的值都必须完相等才会被连接起来。 等值连接是一种关系型数据库中的连接操作,它通过比较两个表之间的某一列的值是否相等,筛选出这些值相等的行,并将这些行连接起来形成一个新的表。在等值连接中,我们可以指定两个表中进行比较的列,只有在这些列的值相等的情况下,才会进行连接内连接是一种关系型数据库中的连接操作,它通过比较两个表之间的某一列的值是否相等,筛选出这些值相等的行,并将这些行连接起来形成一个新的表。在内连接中,我们可以指定两个表中进行比较的列,只有在这些列的值相等的情况下,才会进行连接内连接连接操作中最常用的一种,它只返回两个表中满足连接条件的行,而不返回其他不满足条件的行。 总的来说,自然连接等值连接内连接都是关系型数据库中的连接操作,它们都能将两个表之间的相关数据连接起来。而它们之间的区别在于连接的条件不同,自然连接通过比较所有共同列的值来进行连接等值连接通过比较指定列的值来进行连接,而内连接只返回满足连接条件的行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值