`

[SQLServer]inner join, outer join, cross join

阅读更多
FROM join_table_1 join_type join_table_2

[ON (join_condition)]

/*
    join_table指出参与联接操作的表名,联接可以对同一个表操作,也可以对多表操作,对同一个表操作的联接又称做自联接。
    联接操作中的ON (join_condition) 子句指出联接条件,它由被联接表中的列和比较运算符、逻辑运算符等构成。 
    无论哪种联接都不能对text、ntext和image数据类型列进行直接联接,但可以对这三种列进行间接联接。
*/


INNER JOIN
    内联接使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与联接条件相匹配的数据行。
    根据所使用的比较方式不同,内联接又分为等值联接、自然联接和不等联接三种。
    1.等值联接:在联接条件中使用等于号(=)运算符比较被联接列的列值,其查询结果中列出被联接表中的所有列,包括其中的重复列。
    2.不等联接: 在联接条件使用除等于运算符以外的其它比较运算符比较被联接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
    3.自然联接:在联接条件中使用等于(=)运算符比较被联接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除联接表中的重复列。
    内联接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和联接条件的行。
    仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。

OUTER JOIN
    外联接分为左外联接(LEFT OUTER JOIN或LEFT JOIN)、右外联接(RIGHT OUTER JOIN或RIGHT JOIN)和全外联接(FULL OUTER JOIN或FULL JOIN)三种。
    1.左向外联接:左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
    2.右向外联接:右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
    3.完整外部联接:完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
    外联接时,它返回到查询结果集合中的不仅包含符合联接条件的行,而且还包括左表(左外联接时)、右表(右外联接时)或两个联接表(全外联接)中的所有数据行。
    外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。

CROSS JOIN
    交叉联接(CROSS JOIN)没有WHERE 子句,它返回联接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
   
分享到:
评论

相关推荐

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

    2.3.4 交叉联接(CROSS JOIN)/40 2.3.5 联接的替代写法/40 2.3.6 联合(UNION)/41 2.4 SQL数据类型/42 2.4.1 精确数字类型/43 2.4.2 近似数字类型/43 2.4.3 字符串类型/43 2.4.4 Unicode字符串类型/44 2.4.5 二...

    SQL Server视频教程(以2000为例,结合使用范例,深入浅出,图文并茂)

    联接可以分为内联接(INNER JOIN)、外联接(OUTER JOIN)和交叉联接(CROSS JOIN)。内联接返回两个表中匹配的记录,外联接分为左外(LEFT OUTER JOIN)、右外(RIGHT OUTER JOIN)和全外(FULL OUTER JOIN),分别...

    SQL Server 数据库系统原理

    在实际应用中,常常需要涉及多个表的联合查询,如查询每个学生的所有课程信息、成绩等,这可以通过内连接(INNER JOIN)、外连接(LEFT/RIGHT OUTER JOIN)或者交叉连接(CROSS JOIN)实现。 总结,SQL Server...

    sqlserver2005多表查询

    多表查询主要分为内连接(Inner Join)、外连接(Outer Join)以及交叉连接(Cross Join)三种类型。 1. 内连接(Inner Join): 内连接返回两个表中连接列值相等的记录。换句话说,它只返回那些在两个表的连接列...

    sql server 2000 第八和九章课件

    5. **交叉联接(CROSS JOIN)**:交叉联接返回第一个表中的每一条记录与第二个表中的所有记录的组合,不基于任何特定条件,结果集大小等于两个表的记录数的乘积。 在实际应用中,联接操作通常与`WHERE`子句结合使用,...

    SQL Server和Oracle的常用函数对比.rar

    - 两个系统都支持`JOIN`操作,如`INNER JOIN`, `LEFT JOIN`, `RIGHT JOIN`, `FULL JOIN`,但SQL Server的`CROSS APPLY`和`OUTER APPLY`提供了更灵活的连接方式,Oracle则没有直接对应的特性。 9. **游标**: - ...

    SQL Server 精华 --SQL查询的经典案例

    在IT领域,数据库管理是至关重要的,而SQL Server作为一款广泛应用的关系型数据库管理系统,其功能强大,灵活性高,尤其在处理复杂数据查询方面表现出色。本文将深入探讨SQL Server中的SQL查询,包括经典案例、交叉...

    SQL Server 单表多表连接语句总结..pdf

    SQL Server 中的表连接是数据库查询中的关键操作,它允许从多个表中检索数据并组合成一个结果集。本文主要介绍了五种类型的表连接:内部连接、外部连接(包括左连接、右连接和全外连接)、交叉连接以及自连接,并...

    SQLServer中文帮助《从入门到精通》还有代码讲解.chm.rar

    2. **联接操作**:讲解INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN等不同类型的联接,以及使用WHERE和ON子句来控制联接条件。 3. **聚合函数和GROUP BY**:如何使用SUM, COUNT, AVG, MAX, MIN等聚合函数,配合...

    Beginning Microsoft SQL Server 2012 Programming

    关于数据操作,第四章详细说明了SQL的连接(JOIN)语句,包括INNER JOIN、LEFT/RIGHT/FULL OUTER JOIN和CROSS JOIN等,这些连接类型是整合来自多个表的数据的关键技术。 创建和修改表是数据库设计的核心环节,第五...

    #507 SQL Server 2005 T-SQL Enhancements

    CROSS APPLY返回与LEFT JOIN或INNER JOIN类似的结果,但只包含符合连接条件的行。OUTER APPLY则保留了左表中的所有行,即使没有匹配的右表行,会用NULL填充。 3. **公用表表达式(Common Table Expressions, CTEs)...

    SQLServer数据库设计和高级查询12

    SQLServer支持多种类型的连接,包括内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)和交叉连接(CROSS JOIN)。熟练运用这些连接类型,可以实现数据的有效整合和复杂查询的构建。 #### ...

    SQL Server 单表多表连接语句总结..docx

    SQL Server中的表连接是数据库操作中的核心概念,用于合并来自多个表的数据。本文将深入探讨各种类型的表连接,包括内部连接、外部连接(左连接、右连接、全连接)以及交叉连接,并通过实例来解释它们的工作原理。 ...

    SQLServer学习总结

    连接类型包括内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)和交叉连接(CROSS JOIN)。内连接只返回两个表中匹配的记录,而外连接会包含至少一个表的所有记录,即使在另一个表中没有匹配项。...

    SQLServer数据库设计和高级查询3_2

    SQL Server支持多种类型的联接,包括内联接(INNER JOIN)、外联接(LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)和交叉联接(CROSS JOIN)。正确选择联接类型对于获取准确的结果集至关重要。 #### 3. **窗口函数** ...

    SQL Server Useful DMVs

    INNER JOIN sys.dm_exec_cached_plan AS cp ON qs.plan_handle = cp.plan_handle WHERE Total_elapsed_Time &lt;&gt; 0 AND Execution_count &lt;&gt; 0 ORDER BY total_elapsed_time DESC ``` 此查询用于识别最耗费资源的 SQL ...

    sql-jion 用法

    在SQL中,`CROSS JOIN`与没有ON条件的`INNER JOIN`等效。 2. **Outer Join**: - **Left Join (Left Outer Join)**:左连接以左表(主表)为主,返回左表的所有记录,如果右表(从属表)中没有匹配的记录,则对应...

    Advanced Transact-SQL for SQL Server 2000

    ### 高级 Transact-SQL 在 SQL Server 2000 中的应用 #### 知识点一:Transact-SQL 的高级用法 - **Transact-SQL** 是 Microsoft SQL Server 使用的一种 SQL 方言,它扩展了标准 SQL,提供了额外的功能以支持更...

Global site tag (gtag.js) - Google Analytics