内连接,外链接(左连接、右连接、全连接),交叉连接大总结+附SQL JOINS图解[转]

1.什么是连接查询呢?

概念:根据两个表或多个表的列之间的关系,从这些表中查询数据。

目的:实现多个表查询操作。

2.分类:

首先划分一下,连接分为三种:内连接、外连接、交叉连接

内连接(INNER JOIN):

分为三种:等值连接、自然连接、不等连接

外连接(OUTER JOIN):

分为三种:  
    左外连接(LEFT OUTER JOIN或LEFT JOIN)  
    右外连接(RIGHT OUTER JOIN或RIGHT JOIN)  
    全外连接(FULL OUTER JOIN或FULL JOIN)

交叉连接(CROSS JOIN):

没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积

3.具体使用介绍

联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行。    
联接可分为以下几类:

具体事例表:

book表a:

stu表b:

1、内联接

定义:仅将两个表中满足连接条件的行组合起来作为结果集。
在内连接中,只有在两个表中匹配的行才能在结果集中出现
关键词:INNER JOIN
格式:

SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 条件表达式  

内连接分类:

等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

SQL语句:

1、select * from book as a,stu as b where a.sutid = b.stuid
2、select * from book as a inner join stu as b on a.sutid = b.stuid
//内连接可以使用上面两种方式,其中第二种方式的inner可以省略。  

结果:展示结果相同的id列

2、外联接

外联接可以是左向外联接、右向外联接或完整外部联接。

大概意思就是:在内连接的基础上,还包含表中所有不符合条件的数据行,并将相对应的表列填写NULL  (左--对应右NULL)
在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:

1)LEFT  JOIN或LEFT OUTER JOIN

左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

select * from book as a left join stu as b on a.sutid = b.stuid  

2)RIGHT  JOIN 或 RIGHT  OUTER  JOIN

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

select * from book as a right join stu as b on a.sutid = b.stuid  

3)FULL  JOIN 或 FULL OUTER JOIN

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

select * from book as a full outer join stu as b on a.sutid = b.stuid

3、交叉联接

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积

select * from book as a cross join stu as b order by a.id  

附录一个高大上的图解:

版权声明:欢迎交流! https://blog.csdn.net/basycia/article/details/52205916

原文地址:https://www.cnblogs.com/tangge/p/8949808.html

时间: 2024-07-31 00:58:14

内连接,外链接(左连接、右连接、全连接),交叉连接大总结+附SQL JOINS图解[转]的相关文章

解析:内联,左外联,右外联,全连接,交叉连接的区别

连接分为:内连接.外连接.交叉连接 一.内连接--最常用 定义:仅将两个表中满足连接条件的行组合起来作为结果集. 在内连接中,只有在两个表中匹配的行才能在结果集中出现 关键词:INNER JOIN 格式:SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 条件表达式 说明: (1)列名表中的列名可以出自后面的两个表,但如果两个表中有同名列,应在列名前标明出处,格式为:表名.列名 (2)若连接的两个表名字太长,可以为它们起个别名. 格式为:表名 AS 别名 

Mysql的内连接,外链接,交叉链接

内连接:只连接匹配的行  inner join select A.*,B.* from A,B where A.id = B.parent_id 外链接包括左外链接,右外链接,全外链接 左外链接:包含左表的所有行,右表不匹配的显示null select A.*,B.* from A left join B on A.id = B.parent_id 右外链接:包含右表所有行,左表不匹配的显示null 全外链接:包含左右两表的全部行 full join 交叉链接:笛卡尔积 将一个数据源中的每个行与

左连接,右连接,内连接,外连接, join, left join, right join ,mysql ,oracle

2016-6-12 22:35:51 工作用了一年多的oracle,最近在学mysql, 仔细想想 各种连接,感觉这些概念还是蛮烦人的! 最近整理了一下,分享一下自己的理解,有些东西是借鉴网上并自己吸收了的. 1.不管是什么连接,oracle和mysql的原理是一模一样的,只是有些写法不一样而已.说到写法,这里提一下, select * from A, B where a.filed1=b.filed2; --这是第1种写法, 内连接,这样写,很方便, oracle和mysql通用 select

Oracle表与表之间的连接方式(内连接:inner join 、外连接 全连接: full outer join、左连接:left outer join 、右连接:right outer join、自然连接:natural join)

1 --内连接:INNER JOIN 它表示返回两个表或记录集连接字段的匹配记录,表示两个表中相互包含的部分 2 select * from student inner join sc on student.sno=sc.sno; 3 --外连接(全连接):包含左.右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行.不符合条件的,以空值代替. 4 --全连接:表示两个表组合在一起,左右不相匹配时使用空值替换 5 select * from student full outer join

R7—左右内全连接详解

在SQL查询中,经常会用到左连接.右连接.内连接.全连接,那么在R中如何实现这些功能,今天来讲一讲! SQL回顾 原理 # 连接可分为以下几类: 内连接.(典型的连接运算,使用像   =   或   <>   之类的比较运算符).包括相等连接和自然连接.       内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索   students   和   courses   表中学生标识号相同的所有行.    外连接.外连接可以是左向外连接.右向外连接或完整外部连接.     

理解为什么要将全连接层转化为卷积层

理解为什么要将全连接层转化为卷积层 1.全连接层可以视作一种特殊的卷积 考虑下面两种情况: 特征图和全连接层相连,AlexNet经过五次池化后得到7*7*512的特征图,下一层全连接连向4096个神经元,这个过程可以看做有4096个7*7*512的卷积核和7*7*512的特征图进行卷积操作,最终得到1*1*4096的特征图,等价与全连接得到4096个神经元. 全连接层和全连接层相连,AlexNet的再下一层依然是4096个神经元,即4096个神经元和4096个神经元全连接,由(1)我们得到了1*

内连接,左连接,右连接,全外链接

(菜鸟一枚) 最近在看别人代码的时候,总是碰到诸如join on的SQL语句,上课那会儿老师也仔细的讲过, 单独的拿出来看的话也是很简单的,只是放在那样复杂的SQL语句中,阅读起来还是很费劲. 正好今天不怎么忙,查查资料在总结一下. 工作中,我们都习惯了只查询一张表中的数据,如果业务中需要去查询另外一张表中的数据时, 我们往往习惯于遍历查询的数据然后根据外键字段去查询另外一张表,这样做没有什么问题. 但是当我们需要关联3张表甚至4张表,或者在一些大型的项目中需要些一些非常复杂的SQL语句 的时候

内连接与左外链接的区别

mysql 版本:5.5.13 理论部分 连接概述: 根据连接条件(on 子句),将两张表的相关内容组织成一个结果集 内连接与左外链接的区别描述: 使用内连接时,不符合连接条件的数据,(不管是左表中的还是右表中的)都不会被组织到结果集中 使用左外连接时,对于不符合连接条件的数据,左表中的内容依然会被组织到结果集中,结果集中该条数据对应的右表部分为 null 实例 工资表(salary_info) create table salary_info( name varchar(80) comment

sql 内连接 外连接 左连接 右连接

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF