`
seeallsea
  • 浏览: 41245 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL中内连接,左连接,右连接个人的理解

SQL 
阅读更多

      很久没摸SQL语句了,最近在项目中用到了SQL,又捡起SQL中的内连接,左连接,右连接温习了一下,下面谈谈对它的理解。这个例子我是用SQL Server2008做的测试。

      先看看一个简单的例子,有两个表TableA和TableB,两个表通过TableA的b_id列和TableB的id列连接。两个的表的如图

为做例子这两个表我添加了一些数据,如下图:


 

 我们看到TableA和TableB有数据的交集,用红色的线条表示出了。下面我们就看看用内连接,左连接,右连接查询出的不同结果。

 

内连接:

select A.id, A.value, A.b_id, B.id,B.value
from sales.dbo.TableA A inner join sales.dbo.TableA B on A.b_id = B.id

 或者写成下面这样,是等价的。

SELECT A.id, A.value, A.b_id, B.id,B.value 
FROM sales.dbo.TableA A,sales.dbo.TableB B
where A.b_id = B.id

 这是查询的结果:


我们可以看到查询出的结果就是连个表的交集部分。

 

下面左连接:

Select A.id, A.value, A.b_id, B.id, B.value
from sales.dbo.TableA A left outer join sales.dbo.TableB B on A.b_id = B.id

 查询的结果:



 我们看到查询维度是按照TableA进行的,结果集的行数和TableA的行数是一样的,每一行中,如果TableB有对应的值则显示,如果没有则为NULL。

 

再看看右连接:

Select A.id, A.value, A.b_id, B.id, B.value
from sales.dbo.TableA A right outer join sales.dbo.TableB B on A.b_id = B.id

查询结果:


我们看到查询维度是按照TableB进行的,结果集的行数和TableB的行数是一样的,每一行中,如果TableA有对应的值则显示,如果没有则为NULL。

 

所以内连接,左连接,右连接查询的结果用图来表示如下:



内连接的结果是蓝色C区域的部分,是两个table的数据的交集部分。

左连接是红色A区域的部分,是以TableA为维度,然后连接TableB的数据。

右连接是绿色B区域的部分,是以TableB为维度,然后连接TableA的数据。

 

 

需要说明的是,左连接和右连接的方向是相对的,我们可以这样理解:

<维度表> left outer join <事实表> on <条件>

<事实表> right outer join <维度表> on <条件>

 

所以

TableA left outer join TableB

 和

TableB right outer join TableA
 

的含义是一样的,查询出的结果也是一样的。

 

以上是我SQL连接的个人理解,如果有不妥的地方或者大家有什么心得欢迎讨论!

  • 大小: 6.9 KB
  • 大小: 3.3 KB
  • 大小: 5.2 KB
  • 大小: 4.4 KB
  • 大小: 14.7 KB
分享到:
评论

相关推荐

    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

    本篇文章是对SQL中的四种连接-左外连接、右外连接、内连接、全连接进行了详细的分析介绍,需要的朋友参考下

    MyEclipse(Java)连接SQLServer 2008 R2 失败n次的经验

    本人自己试验,在过程中写的。...由于软件、程序时有更新,所以声明该文件适用于MyEclipse8.5与SQL Server 2008 R2的连接。驱动程序版本3.0. 文中有相关资源的下载网址

    sql数据库连接实例

    通过这外实例,可以快速理解如何用C#连接SQL数据库

    Oracle19C RAC通过gateways连接SQL server数据库

    详细安装步骤+个人理解

    RedGate(SQL数据库备份工具).zip

    SQL Changeset 1 具体没有使用,因为他要连接VSS或者Team,按字面上的理解,应该是数据库变更通知. SQL Compare 数据库比较工具,这个是我最常用的工具,支持表,存储过程,函数,用户等的结构对比,并提供同步功能,有了它...

    java连接sqlserver数据库示例以及jar包

    这里提供了java连接SqlServer数据库时所需要的jar包, 以及连接数据库的实例,这样大家就会很好的学习、与理解java与 sqlserver数据库的JDBC连接

    SQL进阶教程 随书sql代码

    全书可分为两部分,第一部分介绍了SQL语言不同寻常的使用技巧,带领读者从SQL常见技术,比如CASE表达式、自连接、HAVING子句、外连接、关联子查询、EXISTS……去探索新发现。这部分不仅穿插讲解了这些技巧背后的逻辑...

    浅谈SQLServer中的三种物理连接操作

    在SQLServer中,我们所常见的表与表之间的InnerJoin,OuterJoin都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为LoopJoin,MergeJoin,HashJoin这三种物理连接中的一种。理解这三种物理连接是...

    JDBC连接SQLServer2008.pp

    jabc课件,让我们简单的理解什么是jdbc和一些库函数。让你有大体了解和认识。

    java 后台程序java初学者很好的案例,连接Sql2000数据库,自带数据库,swing程序,很好理解

    java初学者很好的案例,连接Sql2000数据库,自带数据库,swing程序,很好理解。//创建ConnectionManager对象,连接数据库。并且返回连接字串

    经典SQL脚本大全

    │ │ 2.1 日期概念理解中的一些测试.sql │ │ 2.2.4 CONVERT在日期转换中的使用示例.sql │ │ 2.3.3 SET DATEFORMAT对日期处理的影响.sql │ │ 2.3.4 SET LANGUAGE对日期处理的影响示例.sql │ │ 2.4.1 日期...

    SQL语法大全

    2. ASP与SQL数据库连接: dim conn set conn=server.createobject("ADODB.connection") con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称 %&gt; 建立...

    数据库实验报告 SQL查询 ,子查询组合

    ,了解SQL语句的数据定义与数据更新功能,了解SQL语句的查询功能,掌握SQL中的数据定义语句的用法,熟练掌握SQL中的插入、修改和删除语句的操作,熟练掌握使用SQL语句进行数据库的简单查询、连接查询。 实验内容和...

    浅谈SQL Server中的三种物理连接操作(性能比较)

    在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge Join,Hash Join这三种物理连接中的一种。理解这三种物理...

    数据库的连接 数据库的连接

    通过本次试验,掌握了如何用JDBC去连接一个数据库,以及数据库的工作原理,还有连接过程中容易出现的异常,掌握了通过ODBC去连接JDBC方法和过程,怎样设置数据源,同时加深了对java程序面向对象编程的理解。

    mysql面试题-SQL连接

    这个问题测试考生对SQL连接的理解,这是关系数据库管理中的一个重要概念,以及他们将这些知识应用于实际情况的能力。

    VB.net连接sql server2008

    实现VB.net对sql server2008简单的增删改查。有图有代码,理解起来应该不难。第一次做项目 里面很多不足的地方,欢迎批评指正。

    SQL-Server2008实验报告

    本资源为本人的课程实验报告,可用于学习基于SQL Server2008或SQL Server...实验3:数据库的统计查询、视图实验——掌握SQL Server 中的视图创建向导和图表创建向导的使用方法,加深对视图和SQL Server图表作用的理解。

    经典全面的SQL语句大全

     右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。  C:full outer join:  全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。  其次,大家来看一些不错的sql...

    Microsoft SQL Server 2008技术内幕:T-SQL语言基础

    《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》是Microsoft SQL Server 2008系列中的一本。书中全面深入地介绍了T-SQL的基本元素,以及SQL Server 2008中新增加的一些特性。主要包括SQL的基础理论、逻辑查询...

Global site tag (gtag.js) - Google Analytics