`

SQL语句中的内联和外联【转】

    博客分类:
  • SQL
阅读更多
联接可分为以下几类:

内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。

外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:

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

RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN 或 FULL OUTER JOIN。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

交叉联接。
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

例如,下面的内联接检索与某个出版商居住在相同州和城市的作者:

USE pubs
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city
AND a.state = p.state
ORDER BY a.au_lname ASC, a.au_fname ASC

FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。




例子:
a表 id name         b表 id job parent_id  
           1 张3                   1 23 1  
           2 李四                  2 34 2  
           3 王武                  3 34 4

a.id同parent_id 存在关系

内连接
select a.*,b.* from a inner join b on a.id=b.parent_id

结果是
1 张3         1 23 1
2 李四        2 34 2

左连接

select a.*,b.* from a left join b on a.id=b.parent_id

结果是
1 张3          1 23 1
2 李四         2 34 2
3 王武         null
右连接
select a.*,b.* from a right join b on a.id=b.parent_id

结果是
1 张3         1 23 1
2 李四         2 34 2
null             3 34 4

完全连接

select a.*,b.* from a full join b on a.id=b.parent_id


结果是
1 张3           1 23 1
2 李四           2 34 2
null             3 34 4
3 王武 null
分享到:
评论

相关推荐

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

    在电子商务系统中,SQL语句的内联外联可以用来连接多个表,例如订单表、客户表、产品表等,以便进行订单管理和客户管理。 四、SQL语句的内联外联经典面试题 4.1 什么是SQL语句的内联外联? 答案:SQL语句的内联...

    sql中内联和外联区别

    如果我们要找出同时存在于A表和B表中的用户卡号,可以使用以下SQL语句: ```sql SELECT A.cardid FROM A INNER JOIN B ON (A.cardid = B.cardid); ``` 执行上述SQL语句后,结果只包括了同时存在于A表和B表中的卡号...

    几个试题中常考的sql语句

    上述SQL语句中使用了`INNER JOIN`关键字,连接`Employees`表和`Orders`表,根据ID字段匹配并返回员工姓名和对应订单的产品信息。 #### 3. 外联接(Outer Join) 外联接分为左外联接、右外联接和全外联接。其中,左...

    SQL高级查询语句实例

    总结来说,SQL的高级查询语句是数据管理的关键技能,包括内联查询、左外联查询和嵌套查询。它们提供了更强大的数据处理能力,能够处理更复杂的查询需求,帮助我们从数据库中抽取更精确、更有价值的信息。通过实践和...

    SQL常用增删改查语句

    本文档总结了 SQL 中常用的增删改查语句,包括基本语句、高级查询语句、函数查询语句、事务和存储过程等。 一、Insert 插入语句 Insert 语句用于将数据插入到数据库表中。基本语法为: Insert into 表名(列名)...

    数据库外联内联.pdf

    例如,员工信息表中的员工和管理者的关系,可以使用以下SQL语句来查询: SELECT worker.name || 'work for' || manager.name FROM employees worker, employees manager WHERE worker.manager_id = manager....

    SQL,ORACLE经典面试题

    在本节中,我们将从数据库基础、SQL 语言、视图、完整性约束、第三范式、ER 模型、索引、事务、锁、死锁、存储过程、触发器 等方面总结 SQL 和 ORACLE 面试题的知识点。 数据库基础 * 数据抽象:物理抽象、概念...

    解析:内联,左外联,右外联,全连接,交叉连接的区别

    例如,如果我们有表格`t_institution`和`t_teller`,并希望找到所有机构编号与当前柜员关联的记录,可以使用如下语句: ```sql SELECT t_institution.*, t_teller.* FROM t_institution INNER JOIN t_teller ON t_...

    数据库面试题目(基础)

    内联和外联是 SQL 语句中的连接类型,用于将两个或多个表中的数据组合起来。 1. 内连接(INNER JOIN):仅将两个表中满足连接条件的行组合起来作为结果集。 2. 外连接: * 左(外)连接(LEFT JOIN):在内连接的...

    SQL Server数据库技术大全 电子书

    2.2 基本的SQL语句/32 2.2.1 使用SELECT查询数据/33 2.2.2 使用INSERT插入数据/34 2.2.3 使用UPDATE更新数据/35 2.2.4 使用DELETE删除数据/36 2.3 联接查询/37 2.3.1 内联接(INNER JOIN)/37 2.3.2 外联接(OUTER ...

    SQL Server CROSS APPLY和OUTER APPLY的应用详解

    SQL Server中的CROSS APPLY和OUTER APPLY是两种特殊的表运算符,它们在2005版本及以上引入,主要用于处理复杂的数据转换和联接操作。这些运算符的主要区别在于如何处理右表表达式的结果。 CROSS APPLY用于执行内联...

    根据客户编码和产品编码查询最新的销售价格.txt

    ### 金蝶Cloud产品销售价格查询SQL语句解析 #### 背景介绍 金蝶Cloud作为一款先进的企业管理软件,提供了...此外,通过灵活运用SQL语句中的联接、排序及筛选等功能,可以进一步扩展查询范围,以满足不同场景下的需求。

    (第一卷)Microsoft.SQL.Server.2008技术内幕:T-SQL语言基础

    主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。  书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...

    (第二卷)Microsoft SQL Server 2008技术内幕:T-SQL语言基础

    主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。  书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...

    Microsoft SQL Server 2005技术内幕:T-SQL查询

    第1章 T-SQL查询和编程基础  1.1 理论背景  1.2 SQL SERVER体系结构  1.3 创建表和定义数据完整性  1.4 总结 第2章 单表查询  2.1 SELECT语句的元素  2.2 谓词和运算符  2.3 CASE表达式  2.4 NULL...

    SQL SERVER 多表联接查询SQL SERVER 多表联接查询SQL SERVER 多表联接查询

    在 SQL Server 中,使用表的别名可以提高语句的可读性,并简化 Transact-SQL 脚本维护。例如,在联接一个表和它自身时,必须使用别名。给字段起名时,使用多表联接时,必须慎重地指定字段名,因为任何数据库对象名称...

    Writing Queries Using Microsoft SQL Server 2008 Transact-SQL

    开始使用SQL Server 2008中的数据库和Transact-SQL - 数据库概述:介绍SQL Server 2008数据库的基本结构和组成部分。 - Transact-SQL简介:解释Transact-SQL语言的特性和使用场景。 - 查询工具:演示如何使用SQL ...

    21天精通SQL教程

    - **外部联合与内部联合**:外联接保留未匹配的行,内联接仅包含匹配的行。 - **表的自我联合**:同一个表的不同实例之间的联接。 #### 第七天:子查询 - **建立一个子查询**:使用子查询可以在主查询中嵌入另一个...

Global site tag (gtag.js) - Google Analytics