T-SQL - 表连接



MS SQL Server 的连接子句用于组合数据库中两个或多个表中的记录。连接是一种通过使用每个表共有的值来组合两个表中的字段的方法。

考虑以下两个表,(a) CUSTOMERS 表如下所示:

ID  NAME       AGE       ADDRESS             SALARY 
1   Ramesh     32        Ahmedabad           2000.00 
2   Khilan     25        Delhi               1500.00 
3   kaushik    23        Kota                2000.00 
4   Chaitali   25        Mumbai              6500.00 
5   Hardik     27        Bhopal              8500.00 
6   Komal      22        MP                  4500.00 
7   Muffy      24        Indore              10000.00 

(b) 另一个表是 ORDERS,如下所示:

OID  DATE                       CUSTOMER_ID        AMOUNT 
100  2009-10-08 00:00:00.000    3                  1500.00 
101  2009-11-20 00:00:00.000    2                  1560.00 
102  2009-10-08 00:00:00.000    3                  3000.00 
103  2008-05-20 00:00:00.000    4                  2060.00 

让我们在 SELECT 语句中连接这两个表,如下所示:

SELECT ID, NAME, AGE, AMOUNT 
   FROM CUSTOMERS, ORDERS 
   WHERE  CUSTOMERS.ID = ORDERS.CUSTOMER_ID 
OR 
SELECT A.ID, A.NAME, A.AGE, B.AMOUNT 
   FROM CUSTOMERS A inner join  ORDERS B on A.ID = B.Customer_ID 

以上命令将产生以下输出。

ID   NAME      AGE    AMOUNT 
2    Khilan    25     1560.00 
3    kaushik   23     1500.00 
3    kaushik   23     3000.00 
4    Chaitali  25     2060.00 

可以注意到,连接是在 WHERE 子句中执行的。可以使用多个运算符来连接表,例如 =、<、>、<>、<=、>=、!=、BETWEEN、LIKE 和 NOT;它们都可以用于连接表。但是,最常见的运算符是等号。

MS SQL Server 连接类型 -

MS SQL Server 中有不同类型的连接 -

  • 内部连接 (INNER JOIN) - 当两个表中都有匹配项时返回行。

  • 左连接 (LEFT JOIN) - 返回左侧表中的所有行,即使右侧表中没有匹配项。

  • 右连接 (RIGHT JOIN) - 返回右侧表中的所有行,即使左侧表中没有匹配项。

  • 全连接 (FULL JOIN) - 当其中一个表中存在匹配项时返回行。

  • 自连接 (SELF JOIN) - 这用于将一个表连接到自身,就好像该表是两个表一样,在 MS SQL Server 语句中临时重命名至少一个表。

  • 笛卡尔积连接 (CARTESIAN JOIN) - 返回两个或多个连接表中记录集的笛卡尔积。

广告

© . All rights reserved.