SQL中 Left Join 与 Right Join 与 Inner Join 与 Full Join的区别

首先看看Left Join 与Right Join 与 Inner Join 与 Full Join对表进行操作后得到的结果。

  • 在数据库中新建两张表,并插入要测试的数据。
  • 新建表:

    [sql]

    USE [Test]

    1. GO
    2. /****** 对象:  Table [dbo].[EMP]   ******/
    3. SET ANSI_NULLS ON
    4. GO
    5. SET QUOTED_IDENTIFIER ON
    6. GO
    7. CREATE TABLE [dbo].[EMP](
    8. [ENAME] [nchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
    9. [CITY] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL
    10. ) ON [PRIMARY]

    [sql]

    USE [Test]

    1. GO
    2. /****** 对象:  Table [dbo].[SAL]    ******/
    3. SET ANSI_NULLS ON
    4. GO
    5. SET QUOTED_IDENTIFIER ON
    6. GO
    7. CREATE TABLE [dbo].[SAL](
    8. [ENAME] [nchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
    9. [SALARY] [money] NULL
    10. ) ON [PRIMARY]

    插入数据得到的表:

    EMP表:

    SAL表:

    • 左连接

      select  * from EMP Left join SAL on EMP.ENAME = SAL.ENAME;

      左连接,表EMP是主表,因此查询结果是显示EMP(主表)的全部信息和SAL(附表)与EMP相关的信息。

    • 右连接

      Select * from EMP Right join SAL on EMP.ENAME = SAL.ENAME;

      右连接,表SAL是主表,因此查询结果显示SALT(主表)的全部信息和EMP(附表)与SAL想关的信息。

      • 内连接

        SELECT * FROM EMP inner join SAL on EMP.ENAME = SAL.ENAME;

        内连接,显示的是连个表相关的信息。

      • 全连接

        SELECT * FROM EMP full join SAL on EMP.ENAME = SAL.ENAME;

        全连接,显示两个表所有的信息。

时间: 2024-10-08 14:37:30

SQL中 Left Join 与 Right Join 与 Inner Join 与 Full Join的区别的相关文章

LINQ TO SQL 中的join(转帖)

http://www.cnblogs.com/ASPNET2008/archive/2008/12/21/1358152.html join对于喜欢写SQL的朋友来说还是比较实用,也比较容易接受的东西.在LINQ TO SQL中,写多表查询,同样可以写join,只是它有它自己的语法要求而已,语义都是一样的,下面我来讲下LINQ TO SQL中的join最基本的形式:都是最简单的,当然还有其它方面的内容,如:怎样加上过滤条件,如何分组,如何排序等等,为了单纯说join的用法,这里就简化下. Cod

30秒懂SQL中的join

30秒懂SQL中的join 注:本文仅仅是本人在网上看到的比较好的文章,为了以后复习方便,就文章 完全复制下来.原文地址如下:http://www.habadog.com/ 预先生成两张测试表,并插入一下测试数据: create table t1(id int, name char(10), primary key (id)); create table t2(id int, score int, primary key (id)); insert into t1 values(1, “lucy

SQL中的JOIN语法详解

参考以下两篇博客: 第一个是 sql语法:inner join on, left join on, right join on详细使用方法 讲了 inner join, left join, right join的意义和用法. 第二个是 SQL中的left outer join,inner join,right outer join用法详解 讲了关系运算背后的数学原理,以及提到了更多类型的连接操作: inner join- 笛卡尔乘积再选取, left outer join, right out

sql中的inner join, left join, right join的区别

下面介绍一下 inner join, left join, right join这者之间的区别 现在我假设有A表和B表 left join select * from A a left join B b on a.aid = b.bid; 这时以左边的A表为基础表,A表的数据全部显示, B表的数据只显示符合on后条件表达式的进行显示,右边字段数据不足的用null填补 right join select * from A a right join B b on a.aid = b.bid; 这时以

Spark SQL中的几种join

1.小表对大表(broadcast join) 将小表的数据分发到每个节点上,供大表使用.executor存储小表的全部数据,一定程度上牺牲了空间,换取shuffle操作大量的耗时,这在SparkSQL中称作Broadcast Join Broadcast Join的条件有以下几个: *被广播的表需要小于 spark.sql.autoBroadcastJoinThreshold 所配置的值,默认是10M (或者加了broadcast join的hint) *基表不能被广播,比如 left out

SQL优化 查询语句中,用 inner join 作为过滤条件和用where作为过滤条件的区别

前段时间遇到一个存储过程,参数之一是一个字符串,实际作用是在存超过中是作为一个查询条件处理的 在存储过程中,把字符串拆分成一个临时表之后作key值,作为一个查询条件,逻辑实现上有两种处理方式 insert into #t select key from split_function('传递进来的字符串',',') 第一种是与物理表做inner join,类似如下 select * from tableA a inner join tableB b on a.id=b.id inner join

SQL中的left outer join,inner join,right outer join用法详解

这两天,在研究SQL语法中的inner join多表查询语法的用法,通过学习,发现一个SQL命令,竟然涉及到很多线性代数方面的知识,现将这些知识系统地记录如下: 使用关系代数合并数据1 关系代数合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的.在关系代数的形式化语言中:?          用表.或者数据集合表示关系或者实体.?          用行表示元组.?          用列表示属性.关系代数包含以下8个关系运算符?          选取――返回满足指定条

SQL中distinct的用法和left join查询的含义

SQL中distinct的用法 1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 表B: 1.作用于单列 select distinct name from A 执行后结果如下: 2.作用于多列 示例2.1 select distinct name, id from A 执行后结果如下: 实际上是根

Access SQL中Left Join、Right Join和Inner Join的使用

1.表结构 表A                                     表B 2.Left Join 示例:2.1 Select * From A left join B on A.aid = B.bid; left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 换句话说,左表A的记录将会全部表示出来,而右表B只会显示符合搜索条件的记录(例子中为: A.aid = B.bid),B表记录不足的地方均为NULL. A表所有记录

sql中的inner join

sql中inner join on 的用途: (等值连接)    select * from A inner join B on A.no=B.no; 查询出所有A的号数跟B的号数相等的记录,相当于:select * from A,B where A.no=B.no; 多表查询: select * from ((表1 inner join 表2 on 表1.no=表2.no)inner join 表3 on 表1.no=表3.no )inner join 表4 on member.no=表4.n