在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图、物化视图等联结),官方的解释如下所示
A join is a query that combines rows from two or more tables, views, or materialized views. Oracle Database performs a join whenever multiple tables appear in the FROM clause of the query. The select list of the query can select any columns from any of these tables. If any two of these tables have a column name in common, then you must qualify all references to these columns throughout the query with table names to avoid ambiguity.
SQL JOIN 归纳起来有下面几种方式,下面一起来梳理一下这些概念。SQL JOIN其实是一个逻辑概念,像NEST LOOP JOIN、 HASH JOIN等是表连接的物理实现方式。
我们先准备一个两个测试表M与N(仅仅是为了演示需要),如下脚本所示
SQL> CREATE TABLE M
2 (
3 NAME VARCHAR2(12)
4 ,SEX VARCHAR2(6)
5 );
Table created.
SQL> CREATE TABLE N
2 (
3 NAME VARCHAR2(12)
4 ,GRADE NUMBER(2)
5 );
Table created.
SQL> INSERT INTO M
2 SELECT 'kerry', 'male' FROM DUAL UNION ALL
3 SELECT 'jimmy', 'male' FROM DUAL UNION ALL
4 SELECT 'tina' , 'female' FROM DUAL UNION ALL
5 SELECT 'wendy', 'female' FROM DUAL;
4 rows created.
SQL> COMMIT;
Commit complete.
SQL> INSERT INTO N
2 SELECT 'kerry', 3 FROM DUAL UNION ALL
3 SELECT 'jimmy', 2 FROM DUAL UNION ALL
4 SELECT 'ken' , 6 FROM DUAL UNION ALL
5 SELECT 'richard',5 FROM DUAL;
4 rows created.
SQL> COMMIT;
Commit complete.