分享一些自己的连表总结
什么是连接表?
-
多表查询原理:将多个表通过笛卡尔积形成一个虚表,再根据查询条件筛选符合条件的数据。
-
在关系数据库中,数据分布在多个逻辑表中。 要获得完整有意义的数据集,需要使用连接来查询这些表
中的数据。 SQL Server支持多种- 连接包括
- INNER JOIN:内连接,关键字在表中存在至少一个匹配时返回行。
- left join : 左连接,返回左表中所有的记录以及右表中连接字段相等的记录。
- right join : 右连接,返回右表中所有的记录以及左表中连接字段相等的记录。
- inner join : 内连接,又叫等值连接,只返回两个表中连接字段相等的行。
- full join : 外连接,返回两个表中的行:left join + right join。
- cross join : 结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
- GROUP BY:全外连接, 子句必须放在 WHERE 子句中的条件之后,必须放在 ORDER BY 子句之前
- 连接包括
每种连接类型指定SQL Server如何使用一个表中的数据来选择另一个表中的行
A. SQL Server内连接
- 内连接是SQL Server中最常用的连接之一。 内部联接子句用于查询来自两个或多个相关表的数据。
- SQL Server INNER JOIN 子句的语法:
在此语法中,从 T1 和 T2 表中查询检索数据:- 首先,在 FROM 子句中指定主表( T1 )
- 其次,在 INNER JOIN 子句和连接谓词中指定第二个表( T2 )。 只有连接谓词计算为 TRUE 的行才包
含在结果集中。
**INNER JOIN **子句将表 T1 的每一行与表 T2 的行进行比较,以查找满足连接谓词的所有行对。 如果连接
谓词的计算结果为 TRUE ,则匹配
的 T1 和 T2 行的列值将合并为一个新行并包含在结果集中。
下图说明了两个结果集的内联接的结果:
使用两个 INNER JOIN 子句来查询三个表中的数据:
图中左右两边的表是有关联的,中间黄色的交互区就是他们两个关联表中关联的数据。
使用INNER JO