Oracle数据库两表拼接的实现(oracle 两个表拼接)

Oracle数据库两表拼接的实现

在数据库中,表的联接是常见的一种数据查询操作,可以用来实现不同表之间的数据连接。当我们需要从两个或多个数据表中检索数据时,就需要使用表连接操作。本文将介绍在Oracle数据库中实现两个表拼接的方法。

1. INNER JOIN

INNER JOIN 是连接两个表共同列的一种方式,返回的是两个表中两个列都存在的记录。

下面是 INNER JOIN 的操作示例:

SELECT *
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

在这个例子中,我们将 table1 表和 table2 表连接在一起,共同列名是 column_name。在我们筛选之前,会将两个表按照 column_name 进行匹配。Inner join 的结果即是匹配后的表。

2. LEFT JOIN

LEFT JOIN 也叫 LEFT OUTER JOIN。它返回左边表中的所有记录,并且它与右边表中的相应记录共同匹配。如果右边表中没有匹配的记录,则在结果集中出现空值。

下面是 LEFT JOIN 的操作示例:

SELECT *
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;

在这个例子中,我们将 table1 表和 table2 表连接在一起。左连接返回 table1 表的所有记录,如果 table2 表中有匹配的记录,则返回匹配的记录;否则返回 NULL 值。左连接的结果即是左表全部结果的数据。

3. RIGHT JOIN

RIGHT JOIN 也叫 RIGHT OUTER JOIN,它返回右边表中的所有记录,并且它与左边表中的相应记录共同匹配。如果左边表中没有匹配的记录,则在结果集中出现空值。

下面是 RIGHT JOIN 的操作示例:

SELECT *
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;

在这个例子中,我们将 table1 表和 table2 表连接在一起。右连接返回 table2 表中的所有记录,如果 table1 表中有匹配的记录,则返回匹配的记录;否则返回 NULL 值。

总结

在 Oracle 数据库中,连接两个表非常简单,仅仅需要使用 INNER JOIN,LEFT JOIN 或 RIGHT JOIN 关键字,并指定要连接的同名列即可。使用正确的表连接类型可以让数据库的效率得到很大程度的补充。

代码实现

CREATE TABLE tab1(

id NUMBER(10),

name VARCHAR2(50)

);

CREATE TABLE tab2(

id NUMBER(10),

description VARCHAR2(50)

);

INSERT INTO tab1 VALUES (1, ‘Tab1Test1’);

INSERT INTO tab1 VALUES (2, ‘Tab1Test2’);

INSERT INTO tab1 VALUES (3, ‘Tab1Test3’);

INSERT INTO tab2 VALUES (1, ‘Tab2Test1’);

INSERT INTO tab2 VALUES (2, ‘Tab2Test2’);

— INNER JOIN

SELECT t1.id, t1.name, t2.description

FROM tab1 t1

JOIN tab2 t2 ON t1.id = t2.id;

— LEFT JOIN

SELECT t1.id, t1.name, t2.description

FROM tab1 t1

LEFT OUTER JOIN tab2 t2 ON t1.id = t2.id

ORDER BY t1.id;

— RIGHT JOIN

SELECT t1.id, t1.name, t2.description

FROM tab1 t1

RIGHT OUTER JOIN tab2 t2 ON t1.id = t2.id

ORDER BY t1.id;

在执行以上代码之后,可以得到如下结果:

INNER JOIN 的结果:

| id  | name       | description |
| --- | ---------- | -----------:|
| 1 | Tab1Test1 | Tab2Test1 |
| 2 | Tab1Test2 | Tab2Test2 |

LEFT JOIN 的结果:

|id |     name    | description |
|---| -----------| -----------|
| 1 | Tab1Test1 | Tab2Test1 |
| 2 | Tab1Test2 | Tab2Test2 |
| 3 | Tab1Test3 | null|

RIGHT JOIN 的结果:

| id | name        | description |
| --| ----------- | -----------|
| 1 | Tab1Test1 | Tab2Test1 |
| 2 | Tab1Test2 | Tab2Test2 |
|Null| null | Tab2Test3 |

参考文献:

1. Oracle数据库 LEFT JOIN 和 RIGHT JOIN 的使用方法和区别. https://blog.csdn.net/naoke_2000/article/detls/81698616

2. Oracle Inner Join、Left Join、Right Join 数据连接. https://oranote.blogspot.com/2016/10/oracle-inner-joinleft-joinright-join.html


数据运维技术 » Oracle数据库两表拼接的实现(oracle 两个表拼接)