~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术: SQL

作者:小益

撰写时间:2022/4/18

在关系数据库中,数据分布在多个逻辑表中。要获得完整有意义的数据集,需要使用连接来查询这些表中的数据。在SQL Server支持多种连接,包括内连接、左连接、右连接、全外连接和交叉连接。每种连接类型指定SQL Server如何使用一个表中的数据来选择另一个表中的行。

1.内连接:首先,在 from子句中指定主表(student),其次,在 inner join 子句和连接谓词中指定第二个表(sc)。只有连接谓词计算为 true的行才包含在结果集中。

例子:

sql server 数据库链接另外一个sql server数据库 查询存储过程 sql server怎么连接两个表_结果集

解释:在词语法中,用student的表连接sc的表,来查询student的sno和sc的sno中的数据,从而来查询两个表中的数据。

2.左连接:对于 student 表中的每一行,查询将其与 sc 表中的所有行进行比较。如果一对行导致连接谓词计算为true,则将组合这些行中的列值以形成新行,然后将其包含在结果集中。如果左表(student)中的行没有与来自sc表的任何匹配行,则查询将左表中的行的列值与来自右表的每个列值的 null组合。简而言之,left join 子句返回左表(student)中的所有行以及右表(sc)中匹配的行或 null值。

例子:

sql server 数据库链接另外一个sql server数据库 查询存储过程 sql server怎么连接两个表_SQL_02

解释:用左连接查询student表和sc表中的数据,然后返回所有的行,如果不匹配,则右表返回null。

3.右连接:right join子句组合来自两个或多个表的数据。right join开始从右表中选择数据并与左表中的行匹配。right join返回一个结果集,该结果集包含右表中的所有行,无论是否具有左表中的匹配行。如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用 null值。

例子:

sql server 数据库链接另外一个sql server数据库 查询存储过程 sql server怎么连接两个表_数据_03

解释:用右连接查询student表和sc表中的数据,然后返回所有的行,如果不匹配,则左表返回null。

4.交叉连接:与inner join或left join不同,交叉连接不会在连接的表之间建立关系。假设 student 表包含三行:1,2和3,sc表包含三行A,B和C。cross join从第一个表(student)获取一行,然后为第二个表(sc)中的每一行创建一个新行。然后它对第一个表(student)中的下一行执行相同操作,依此类推。

例子:

sql server 数据库链接另外一个sql server数据库 查询存储过程 sql server怎么连接两个表_数据_04

解释:cross join将第一个表(student)中的每一行与第二个表(sc)中的每一行连接起来。也就是说,交叉连接返回两个表中行的笛卡尔积。

5.自连接:自联接用于将表连接到自身(同一个表)。它对于查询分层数据或比较同一个表中的行很有用。自联接使用内连接或左连接子句。由于使用自联接的查询引用同一个表,因此表别名用于为查询中的表分配不同的名称。

例子:

sql server 数据库链接另外一个sql server数据库 查询存储过程 sql server怎么连接两个表_sql_05

解释:查询语句中两次引用表T。表别名t1和t2用于为T表分配不同的名称。staffs表存储员工信息,如身份证,名字,姓氏和电子邮件。它还有一个名为 manager_id 的列,用于指定直接管理者。

6.全外连接:是左外连接和右外连接的结合,就是返回左右表中的所有的数据和左右表中连接的字段相等的数据。

在SQL Server语句中,用的最多的就是内连接和左右连接,这几种连接表的方式是查询SQL Server语句最常用的,能够更好的查询出自己所需的数据。

以上就是我所学到的知识,希望对大家有帮助,新手上道,请多多指教。