`

[SQLServer]inner join, outer join, cross join

SQL 
阅读更多
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最全的常用命令语句

    FROM sys.dm_exec_cached_plans p OUTER APPLY sys.dm_exec_sql_text (p.plan_handle) sql ORDER BY usecounts,p.size_in_bytes desc SELECT top 25 qt.text,qs.plan_generation_num,qs.execution_count,dbid,...

    精通SQL--结构化查询语言详解

    9.3.5 交叉连接(cross join) 176 9.4 union与union join 177 9.4.1 关系的集合运算 177 9.4.2 union运算符 178 9.4.3 order by子句排序union运算结果 180 9.4.4 对多表进行union运算 181 9.4.5 union join ...

    微软内部资料-SQL性能优化5

    In a nonclustered index, the leaf level contains each index key, plus a bookmark that tells SQL Server where to find the data row corresponding to the key in the index. A bookmark can take one of two ...

    精通SQL 结构化查询语言详解

    《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言...

    精通SQL数据库连接.doc

    FULL OUTER JOIN ( Product CROSS JOIN Color ) ON Catalog.item = Product.item AND Catalog.item_color = Color.color_name;   成为数据库专家 JOIN声明可以有效地找到你所需要的信息并避免带来麻烦。通过使用...

    经典SQL语句大全

    C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。 12、分组:Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息:(统计...

    sql经典语句一部分

    C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。 12、分组:Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息:(统计信息...

    数据库操作语句大全(sql)

    C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。 12、分组:Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息:(统计信息...

    超实用sql语句

    C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。 12、分组:Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息:(统计...

    SQL语法大全

    SQL语法大全 SQL语法大全 1. ASP与Access数据库连接: dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     数据查询语言 (Data Query Language, DQL) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。例如:SELECT(查询)  数据控制语言Data Controlling Language(DCL),用来...

Global site tag (gtag.js) - Google Analytics