T-SQL - 连接(Join)表

  • 简述

    微软 SQL 服务器Joins子句用于合并数据库中两个或多个表的记录。JOIN 是一种通过使用每个表的公共值来组合两个表中的字段的方法。
    考虑以下两个表,(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− 返回两个或多个连接表中记录集的笛卡尔积。