SQL 联接子句用于组合数据库中两个或多个表的记录. JOIN是一种通过使用每个表共有的值来组合两个表中的字段的方法.
考虑以下两个表 :
表1 : 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 | +----+----------+-----+-----------+----------+
表2 : ORDERS表
+-----+---------------------+-------------+--------+ |OID | DATE | CUSTOMER_ID | AMOUNT | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 3000 | | 100 | 2009-10-08 00:00:00 | 3 | 1500 | | 101 | 2009-11-20 00:00:00 | 2 | 1560 | | 103 | 2008-05-20 00:00:00 | 4 | 2060 | +-----+---------------------+-------------+--------+
现在,让我们在SELECT语句中加入这两个表,如下所示.
SQL> SELECT ID, NAME, AGE, AMOUNT FROM CUSTOMERS, ORDERS WHERE CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
这会产生以下结果.
+----+----------+-----+--------+ | ID | NAME | AGE | AMOUNT | +----+----------+-----+--------+ | 3 | kaushik | 23 | 3000 | | 3 | kaushik | 23 | 1500 | | 2 | Khilan | 25 | 1560 | | 4 | Chaitali | 25 | 2060 | +----+----------+-----+--------+
这里,值得注意的是,连接是在WHERE子句中执行的.可以使用多个运算符来连接表,例如=,<,>,<>,< =,> =,!=,BETWEEN,LIKE和NOT;它们都可以用来连接表格.但是,最常见的运算符是等于符号.
SQL中有不同类型的连接;
INNER JOIN : 当两个表中都匹配时返回行.
LEFT JOIN : 返回左表中的所有行,即使右表中没有匹配项.
RIGHT JOIN : 返回右表中的所有行,即使左表中没有匹配项.
FULL JOIN : 当其中一个表中存在匹配时返回行.
SELF JOIN : 用于将表连接到自身,就像表是两个表一样,在SQL语句中暂时重命名至少一个表.
CARTESIAN JOIN : 返回两个或多个连接表中记录集的笛卡尔积.
现在让我们详细讨论这些连接中的每一个