加入是用来从多个表中的行结合起来。每当在一个SQL语句的FROM子句中列出的两个或多个表进行联接。
有不同类型的联接。让我们看看几个例子。
内部联接(简单的加入)
机会是,你已经写了一个SQL语句,使用一个内部联接。这是最常见的类型,加入。内部联接满足联接条件的多个表返回所有行。
代码如下 | 复制代码 |
SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date |
这条SQL语句将返回从那里是一个匹配的供应商和订单表supplier_id价值的供应商和订单表的所有行。
让我们看看一些数据解释工作的内在联结如何:
我们有两个领域的供应商(supplier_id和supplier_名称)表。
它包含以下数据:
supplier_id | supplier_name |
---|---|
10000 | IBM |
10001 | Hewlett Packard |
10002 | Microsoft |
10003 | NVIDIA |
We have another table called orders with three fields (order_id, supplier_id, and order_date).
It contains the following data:
order_id | supplier_id | order_date |
---|---|---|
500125 | 10000 | 2003/05/12 |
500126 | 10001 | 2003/05/13 |
代码如下 | 复制代码 |
SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date |
结果
supplier_id | name | order_date |
---|---|---|
10000 | IBM | 2003/05/12 |
10001 | Hewlett Packard | 2003/05/13 |
Outer Join
先看一个实例
代码如下 | 复制代码 |
select suppliers.supplier_id, suppliers.supplier_name, orders.order_date |
这条SQL语句将返回所有行从供应商表,并只有那些从订单表中的行的联接字段相等。
(+),后orders.supplier_id场表示,如果在供应商的表supplier_id价值不存在订单表,订单表中的各个领域将作为
上面的SQL语句也可以写成如下形式:
代码如下 | 复制代码 |
select suppliers.supplier_id, suppliers.supplier_name, orders.order_date |
看看结果
supplier_id | supplier_name |
---|---|
10000 | IBM |
10001 | Hewlett Packard |
10002 | Microsoft |
10003 | NVIDIA |
We have a second table called orders with three fields (order_id, supplier_id, and order_date).
It contains the following data:
order_id | supplier_id | order_date |
---|---|---|
500125 | 10000 | 2003/05/12 |
500126 | 10001 | 2003/05/13 |
代码如下 | 复制代码 |
select suppliers.supplier_id, suppliers.supplier_name, orders.order_date |
结果为
supplier_id | supplier_name | order_date |
---|---|---|
10000 | IBM | 2003/05/12 |
10001 | Hewlett Packard | 2003/05/13 |
10002 | Microsoft | |
10003 | NVIDIA |