首页 > 其他分享 >左连接、右连接、交叉连接、全外连接

左连接、右连接、交叉连接、全外连接

时间:2023-06-27 22:02:25浏览次数:34  
标签:StudentId join 交叉 全外 运算符 Book Student 连接


第一部分、连接查询

一、内连接

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:

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

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

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

 

二、外连接

返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。

 

三、交叉连接

交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行。

第二部分、实例说明

  • 实例

Book表:

左连接、右连接、交叉连接、全外连接_交叉连接

 Student表:

左连接、右连接、交叉连接、全外连接_执行过程_02

一、内连接

select*

fromas b,[Student] as

where.StudentId=s.StudentId

         等价于如下(也可以不要关键字inner,此为系统默认)

select*

fromas b inner join [Student] as

ON.StudentId=s.StudentId

         结果为:

左连接、右连接、交叉连接、全外连接_外连接_03

 

         执行过程

相当于内连接的向右连接。以from  [Book] inner join [Student]等式右边为基准,即以Student表(等式右表,s表)的s.StudentId为基准,遍历Book表(等式左表,Book表)中与之匹配的b.StudentId,然后拼接返回。结果含有重复的列,b.StudentId和s.StudentId。

         说明

这与where b.StudentId=s.StudentId或者s.StudentId=b.StudentId位置没有关系。它仅仅代表满足条件而已,不判定谁为基准。以下外连接,交叉连接相同操作。

 

二、外连接

1、左外连接

         代码

select*

fromas b left join [Student] as

ON.StudentId=s.StudentId

         结果

 

左连接、右连接、交叉连接、全外连接_外连接_04

         执行过程

即以from [Book] left join [Student]的Book表为基准,即以Book表(b表)的b.StudentId为基准。遍历Student表(s表)中与之匹配的b.StudentId。若b.StudentId含有s.StudentId匹配项,则进行拼接,然后遍历Student表的下一条s.StudentId,当查询完毕则进入下一条b.StudentId。若b.StudentId没有相应s.StudentId匹配项时,则显示左表的项,拼接右表的项显示为NULL。

 

2、右外连接

         代码

select*

fromas b right join [Student] as

ON.StudentId=s.StudentId

         结果

 

左连接、右连接、交叉连接、全外连接_交叉连接_05

         执行过程

即以from [Book] right join [Student]的Student表为基准,即以Student表(s表)的s.StudentId为基准。遍历Book表(b表)中与之匹配的s.StudentId。若s.StudentId含有b.StudentId匹配项,则进行拼接,然后遍历Book表的下一条b.StudentId,当查询完毕则进入下一条s.StudentId。若s.StudentId没有相应b.StudentId匹配项时,则显示右表的项,拼接左表的项显示为NULL。

 

3、全外连接

         代码

select*

fromas b full outer join [Student] as

ON.StudentId=s.StudentId

         结果

 

左连接、右连接、交叉连接、全外连接_外连接_06

         执行过程

即以from [Book] full outer join [Student]中先以Book表进行左外连接,然后以Student表进行右外连接。

 

三、交叉连接

         代码

select*

fromas b CROSS Join [Student] as

Orderby b.BookId

         结果

左连接、右连接、交叉连接、全外连接_外连接_07

 

         执行过程

 

即是按照Order排序的Id,把要Join的右表无条件拼接过来。这样依次执行,这样这种记录便为两个表的记录的笛卡尔积。

标签:StudentId,join,交叉,全外,运算符,Book,Student,连接
From: https://blog.51cto.com/nethub/6566809

相关文章

  • redis介绍和安装,redis普通链接和连接池,redis字符串类型,redis hash类型
    1Redis介绍和安装#Redis:软件,存储数据的,速度非常快,redis是一个key-value存储系统(没有表的概念),cs架构的软件 -服务端客户端(python作为客户端,java,go,图形化界面,命令窗口的命令)#es:存数据的地方#关系型数据库和非关系型数据库 -关系型:mysql,PostgreSQL,oracle,sqlserver,db2......
  • TCP连接中CLOSE_WAIT状态的原因与解决方法?
        关闭socket分为主动关闭和被动关闭两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接;将关闭部分的状态转移摘出来,就得到了下图: 产生原因?通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状......
  • 性能_3 jmeter连接数据库jdbc(sql server举例)
    一、下载第三方工具包驱动数据库1.因为JMeter本身没有提供链接数据库的功能,所以我们需要借助第三方的工具包来实现。 (有这个jar包之后,jmeter可以发起jdbc请求,没有这个jar包,也有jdbc取样器,但不能发起请求。)2.进入maven仓库-http://mvnrepository.com/,找到想要的......
  • 跨平台开源远程连接工具rustdesk
    rustdeskhttps://github.com/rustdesk/rustdeskhttps://gitee.com/mirrors/rustdesk......
  • 微信小程序连接websocket随记
    微信小程序需要上报经纬度到服务器,采用workman作为Websocket服务,记录一下步骤:1、修改start_gateway.php文件//$gateway=newGateway("tcp://0.0.0.0:8282");$gateway=newGateway("websocket://0.0.0.0:8282");2、在小程序后台配置socket域名(开发-> 开发管理-> 开发设......
  • Java跟数据库连接有问题怎么办?
    Java与数据库连接出现问题时,可以尝试以下几个步骤来解决问题:1、检查数据库驱动程序:确保使用的数据库驱动程序与数据库版本兼容。检查并确保已正确导入所需的数据库驱动程序的jar文件。2、验证数据库连接参数:确保提供了正确的数据库连接参数,包括数据库URL、用户名和密码等。验证......
  • javascript连接MySQL
    varmysql =require('mysql');varconnection=mysql.createConnection({  host  :'localhost',  user  :'root',  password:'password',  port:'3306',  database:'nufix'});connecti......
  • NetBeans连接SQLServer2008配置
    一、配置SQLServer(一)SQLServer配置管理器1、打开SQLServer配置管理器  (1)文件路径,我的是C:\Windows\SysWOW64\mmc.exe,也可以从开始菜单找(如下图所示) ps网络资源:Windows10可能在菜单栏里找不到SQLserver的配置管理器,去路径:C:\Windows\system32,在该路径下找文件SQLSer......
  • 常用的数据库连接池、配置参数及相应的调优方法
    数据库连接池是一种用于管理和维护数据库连接的技术,不同类型的数据库连接池具体的配置参数和调优方法也是有所不同的。下面分别举例C3P0、DBCP、HikariCP和Druid的常用配置信息和调优建议:C3P0常用配置参数:#连接池中容许的最小连接数目c3p0.minPoolSize=5#连接池中容许......
  • 如何建立Linux与git的连接?
    @[Toc]本文以Xshell为案例进行与git的连接!建立连接三板斧:add,commit,pushLinux与git远程连接的方法:1.设置全局的用户名和邮箱gitconfig--globaluser.name"你的用户名"gitconfig--globaluser.email"你的邮箱"2.先创建本地文件夹mkdirtest3.cd进入本地仓库cdtest4......