Oracle数据库两表拼接的实现(oracle 两个表拼接)
Oracle数据库两表拼接的实现
在数据库中,表的联接是常见的一种数据查询操作,可以用来实现不同表之间的数据连接。当我们需要从两个或多个数据表中检索数据时,就需要使用表连接操作。本文将介绍在Oracle数据库中实现两个表拼接的方法。
1. INNER JOIN
INNER JOIN 是连接两个表共同列的一种方式,返回的是两个表中两个列都存在的记录。
下面是 INNER JOIN 的操作示例:
SELECT *
FROM table1INNER 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 table1LEFT 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 table1RIGHT 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