`

数据库内联、左联、右联

阅读更多

 

一.先看一些最简单的例子

例子:

Table A

aid  adate
a1
2 a2
3 a3

 

TableB

bid bdate
1 b1
2 b2
4 b4
两个表a,b相连接,要取出id相同的字段
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2

那么left join 指:
select * from a left join b on a.aid = b.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
3 a3 空字符

同样的也有right join
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
4 空字符 b4

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

二. left join/right join/inner join操作演示

表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115

表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408

实验如下:
1. left join
sql语句如下:

SELECT * FROM A
LEFT JOIN B
ON A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影响的行数为 5 行)

结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.

2. right join
sql语句如下:

SELECT * FROM A
RIGHT JOIN B
ON A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(所影响的行数为 5 行)

结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

3.inner join
sql语句如下:

SELECT * FROM A
INNERJOIN B
ON A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

-----------------[以下为网上的一点资料]------------------
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:
FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:
① table1, table2参数用于指定要将记录组合的表的名称。
② field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
③ compopr参数指定关系比较运算符:”=”, “<", ">“, “<=", ">=” 或 “<>“。
④ 如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。

 

分享到:
评论

相关推荐

    SQL左联右联的通俗解释

    ### SQL左联右联的通俗解释 在数据库操作中,联接(Join)是一种非常重要的技术,用于将多个表中的数据结合在一起。联接可以分为几种类型:内联接(INNER JOIN)、左联接(LEFT JOIN)、右联接(RIGHT JOIN)等。...

    数据库内联外联等代码.txt

    y由于编程需要各种不同功能的数据库连接,这里整理了常用的数据库内联,外联,交叉连接等代码,直接复制就可以

    数据库外联内联.pdf

    本文档主要讲述数据库外联内联的相关知识点,涵盖自联、关系代数、连接类型、子查询等内容。 1. 自联 自联是指一个表中两个字段的关系。例如,员工信息表中的员工和管理者的关系,可以使用以下SQL语句来查询: ...

    数据库的外联和内联知识 Inner Join

    "数据库的外联和内联知识 Inner Join" 数据库的外联和内联知识是关系数据库管理系统中的一种基本操作,它们用于从多个表中提取相关数据,生成新的结果集合。在关系代数中,连接运算是由一个笛卡尔积运算和一个选取...

    数据库外联、内联.pdf

    本文主要讨论了数据库中的连接类型,包括内联(Inner Join)、外联(Outer Join)以及它们的变体,如左外联(Left Outer Join)、右外联(Right Outer Join)和全外联(Full Outer Join)。这些概念对于理解和优化...

    内联函数-14.08.25

    此外,还需要将“调试信息格式”从“编辑和继续使用的程序数据库”更改为“程序数据库”。 #### 四、内联与外联 内联函数有两种形式:**内联版本**和**外联版本**。 1. **内联版本**:当内联功能被启用,并且函数...

    sqljoin示例

    sqljoin示例,包含左联右联内联以及外联等连接方式是学习SQL必不可少的知识

    ARM GCC 内联汇编参考手册

    ### ARM GCC 内联汇编参考手册解析 #### 关键知识点概述 本手册主要介绍了如何在C语言中使用GCC提供的内联汇编功能来编写针对ARM架构的代码。内联汇编是一种强大的技术,允许开发者在C代码中插入低级汇编指令,...

    sql语句的内联外联 经典面试题

    SQL语句的内联外联是一种常见的数据库查询技术,它可以根据不同的连接方式将多个表连接起来,提高查询效率和数据整合性。在面试中,SQL语句的内联外联经典面试题是一个非常重要的考察点。本文将对SQL语句的内联外联...

    asm.rar_vb.net 内联汇编_内联汇编插件

    内联汇编是编程语言中一个重要的特性,它允许程序员在高级语言中直接插入汇编代码,以便进行底层性能优化或者解决某些特定问题。在VB.NET(Visual Basic .NET)中,虽然它主要是一个高级面向对象的语言,但通过内联...

    VC内联汇编资料 VC内联汇编资料

    内联汇编是编程语言中的一种特性,允许程序员在高级语言代码中嵌入汇编语言指令,以便对特定性能敏感的区域进行优化或执行底层操作。在Microsoft Visual C++(简称VC)环境中,内联汇编是通过MSVC编译器的扩展功能...

    在Visual_C++中使用内联汇编

    ### 在Visual C++中使用内联汇编:深入解析与应用 #### 一、内联汇编概述 在计算机编程领域,特别是在C/C++中,内联汇编是一种特殊的编程技术,它允许开发者直接在高级语言中嵌入汇编语言代码。这种方式的主要优势...

    IBM内联汇编指导

    IBM内联汇编指导主要介绍的是如何使用IBM XLC/C++编译器在IBM z系统Linux平台上进行内联汇编编程,以提升应用程序性能。在文章中,作者Anh Tuyen Tran提供了对内联汇编基础知识的深入讲解,并指出了该技术的优势和...

    内联函数体要放在头文件

    内联函数体要放在头文件:深入理解与实践 标题“内联函数体要放在头文件”以及描述“内联函数体要放在头文件中。基本知识。需要的可以看。”,简明扼要地指出了C++编程中内联函数的定义与使用规则的一个重要方面。...

    内联汇编2.rar

    内联汇编是一种将汇编语言指令嵌入到高级编程语言(如C++或C)中的技术,使得程序员能够直接对计算机硬件进行低级控制,同时保持高级语言的易读性和可维护性。这种技术在特定场景下非常有用,比如性能优化、硬件交互...

    VB中利用SQL语句实现高效数据处理.pdf

    表的连接是 SQL 语句中的一种重要操作,包括内联、左联和右联。内联是取同时满足条件的行,左联是取前面表中的所有行,右联是取后面表中的所有行,当另一个表中没有数据时以 NULL 填充。 内联的 SQL 语句为: ...

    数据库面试题目(基础)

    数据库面试题目是数据库开发人员面试时经常被问到的问题,本文将对数据库面试题目进行分类解释,涵盖存储过程、内联和外联、触发器等重要知识点。 一、存储过程 存储过程是数据库中的一种预编译的 SQL 语句集合,...

    C++内联汇编示例

    C++内联汇编是一种将汇编语言代码嵌入到C++程序中的技术,它允许开发者在高级语言中直接插入低级操作,以优化特定性能关键的代码段或解决特定平台的问题。本工程通过一系列示例,展示了如何在C++程序中使用内联汇编...

    易语言置入代码内联汇编源码

    "易语言置入代码内联汇编源码"指的是在易语言程序中嵌入汇编语言代码,以便在需要高效计算或者底层操作时使用。这种方式允许程序员结合易语言的高级语法和汇编语言的低级控制能力,实现更优化的程序性能。 汇编语言...

Global site tag (gtag.js) - Google Analytics