内连接,外链接(左连接、右连接、全连接),交叉连接大总结

转载自 内连接,外链接(左连接、右连接、全连接),交叉连接大总结

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  

附录一个高大上的图解:

解释一下: 1.上图(来源网上大神)左边两个为左连接的例子图解

       2.上图右边两个为右连接的例子图解

       3.上图中间一个为内连接的例子图解

       4.上图下面两个为全连接的例子图解            

参考:

http://www.cnblogs.com/afirefly/archive/2010/10/08/1845906.html

http://blog.sina.com.cn/s/blog_9bf70eb101012va6.html

http://dataunion.org/11954.html

http://www.jb51.net/article/39432.htm



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis创建集群报错can‘t connect to node 192.168.163.203

【README】 创建集群报错 cant connect to node 192.168.163.203 [rootcentos201 ~]# /usr/local/redis-cluster/bin/redis-trib.rb create --replicas 0 192.168.163.201:6379 192.168.163.202:6379 192.168.163.203:6379 >>> Creating cluster Connecting to no…

SpringMVC控制器方法获取参数时@RequestParam注解加与不加的区别

问题 在使用SpringMVC时获取参数时&#xff0c;加与不加RequestParam都会自动传入参数值&#xff0c;那加与不加的区别是什么&#xff1f; 测试 GetMapping("test1")public String test1(String s){return "参数&#xff1a;"s;}GetMapping("test2&…

如何设置电脑自动锁屏_这个手机锁屏密码竟可以根据时间而变化!密码每分钟都会发生改变...

如今&#xff0c;手机已经成为了我们生活中不可或缺的一部分。手机里面承载了我们太多的个人信息、生活隐私&#xff0c;财产安全等等。为了防止别人偷窥我们的手机&#xff0c;我们都会将手机设置锁屏密码。相信大家锁屏设置的都是图形或者数字密码。但是这样的密码很容易被人…

我猜,每个程序员对着电梯都想过调度算法吧

转载自 我猜&#xff0c;每个程序员对着电梯都想过调度算法吧 传统电梯调度算法 1.1 先来先服务算法&#xff08;FCFS&#xff09; 先来先服务&#xff08;FCFS-First Come First Serve&#xff09;算法&#xff0c;是一种随即服务算法&#xff0c;它不仅仅没有对寻找楼层进行…

redis集群添加节点报错Either the node already knows other nodes (check with CLUSTER NODES) or contains some k

【README】 redis集群添加节点报错 [ERR] Node 192.168.163.202:6380 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0. 【1】 原因 导致异常的主要原因是该节点中默认生成的配置或历史存储数据…

SpringMVC 参数校验

SpringMVC 可以通过使用注解的方式对参数进行校验&#xff0c;省去参数校验的代码 引入依赖 Spring项目需引入 <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.7.F…

linux入门_Linux超详细0基础入门篇(一)

首先要感谢大康老师对我在Linux操作系统上的教导。今天来讲一下用途广泛的Linux的基础入门教程仅仅是做入门使用&#xff0c;如果想更加深入的学习那就需要自己做探索了。本次例子使用的是kali linux(ARM架构)是基于Debian的Linux发行版本&#xff0c;可能会与其他版本操作有所…

教你如何监控 Java 线程池运行状态

转载自 干货 | 教你如何监控 Java 线程池运行状态 之前写过一篇 Java 线程池的使用介绍文章《线程池全面解析》&#xff0c;全面介绍了什么是线程池、线程池核心类、线程池工作流程、线程池分类、拒绝策略、及如何提交与关闭线程池等。 但在实际开发过程中&#xff0c;在线程池…

算法设计与分析:(一)时间复杂度分析

数学基础 设f和g是定义域为自然数集N上的函数 存在正整数c、n&#xff0c;使0<f(n)<cg(n)成立&#xff0c;称f(n)的渐进上界是g(n)&#xff0c;记作f(n)O(g(n))存在正整数c、n&#xff0c;使0<cg(n)<f(n)成立&#xff0c;则称f(n)渐进下界是g(n)&#xff0c;记作…

redis集群3种模式

【README】 转自&#xff1a; https://segmentfault.com/a/1190000022808576 &#xff08;好文章&#xff09; Redis 支持三种集群方案 主从复制模式Sentinel&#xff08;哨兵&#xff09;模式Cluster 模式【1】主从复制模式 主从复制的作用 通过持久化功能&#xff0…

ios签名软件_苹果企业签名常常掉怎样处理【苹果签名吧】

对于使用ios苹果系统的开发者来说&#xff0c;可以在苹果app商店下载现在陈列的APP软件&#xff0c;但是没有陈列的APP软件只能使用苹果签名&#xff0c;通过上传到app签名渠道的方法下载。这种方法的缺点是&#xff0c;如果苹果ios签名无效(即签名丢失)&#xff0c;应用程序无…

算法设计与分析:(二)动态规划

目录设计思想使用动态规划的必要条件适用动态规划算法解决的问题的特征&#xff1a;优化原则&#xff1a;动态规划的一般步骤以背包问题为例动态规划本质上为带备忘录的穷举算法。对动态规划问题&#xff0c;直接套框架即可&#xff1a;问题有什么「状态」&#xff0c;有什么「…

开发app用户协议_APP软件开发如何让用户更开心地付钱?

原标题&#xff1a;APP软件开发如何让用户更开心地付钱&#xff1f;在一些付费产品中&#xff0c;明明花费了很多心思和精力制作的产品却被用户嫌弃&#xff0c;付钱的时候不情不愿。这是什么原因造成的呢&#xff1f;一、如何判断服务和虚拟商品的价值&#xff1f;比如在线的音…

漫画:什么是八皇后问题

转载自 漫画&#xff1a;什么是八皇后问题&#xff1f;题目是什么意思呢&#xff1f;国际象棋中的皇后&#xff0c;可以横向、纵向、斜向移动。如何在一个8X8的棋盘上放置8个皇后&#xff0c;使得任意两个皇后都不在同一条横线、竖线、斜线方向上&#xff1f;让我们来举个栗子&…

redis-java客户端jedis测试

【README】 本文旨在记录 jedis 包连接redis集群的开发方式&#xff0c;并对api做简单测试&#xff0c;api不会深入&#xff1b; maven引入的 jedis依赖 <dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</a…

MySQL优化(二):索引的类型、匹配原则、创建原则

目录索引的优缺点索引类型聚簇索引&#xff08;主键索引&#xff09;非聚簇索引&#xff08;二级索引、辅助索引&#xff09;索引匹配的原则最左匹配原则无法使用索引的场景索引创建的原则使不使用索引的依据到底是什么&#xff1f;参考索引的优缺点 常见的索引结构有: B 树&a…

jedis对redis键加锁+解锁+事务提交

【README】 redis的java客户端对键加锁和解锁&#xff08;Jedis.watch() Jedis.unwatch() &#xff09;&#xff1b; 【1】代码 /*** redis加锁-watch * 【场景描述】&#xff1a; watch命令就是标记一个键&#xff0c;如果标记了一个键&#xff0c;* 在提交事务前如果该键…

win10关闭快速启动_装系统不求人,快速制作启动U盘,傻瓜式重装WIN10

在以前如果我们的电脑系统损坏&#xff0c;无法进入WINDOWS系统&#xff0c;在需要重装WINDOWS系统时&#xff0c;一般的做法是&#xff0c;下载一个WINDOWS系统镜像&#xff0c;制作一个PE启动盘&#xff0c;在PE里安装系统镜像。这样传统的WINDOWS系统重装过程麻烦且耗时。而…

漫画:什么是SnowFlake算法

转载自 漫画&#xff1a;什么是SnowFlake算法方法一&#xff1a;UUIDUUID是通用唯一识别码 (Universally Unique Identifier)&#xff0c;在其他语言中也叫GUID&#xff0c;可以生成一个长度32位的全局唯一识别码。String uuid UUID.randomUUID().toString()结果示例&#xff…

FeignClient调用服务及上传文件的注意点及问题

目录代码示例文件服务接口调用方注意点&#xff1a;2021.3.16更新&#xff1a;发新的坑坑点&#xff1a;原因分析部分异常及解决方案异常一&#xff1a;[Method has too many Body parameters](https://blog.csdn.net/haishiyizhenfeng/article/details/80607003)异常二&#x…