📅  最后修改于: 2020-12-29 04:37:25             🧑  作者: Mango
SQL Joins子句用于合并数据库中两个或多个表中的记录。 JOIN是一种通过使用每个表的公用值来组合两个表中的字段的方法。
考虑以下两个表-
表1-客户表
+----+----------+-----+-----------+----------+
| 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-订单表
+-----+---------------------+-------------+--------+
|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-从两个或多个联接表中返回记录集的笛卡尔积。
现在让我们详细讨论每个连接。