orcal查询语句小节

y_0034.gif

t_0032.gif

oracle 的外联接、交叉连接:oracle

内连接(inner join )。
外联接:全连接(full join )、左连接(left join )、右连接(right join )。
交叉联接(cross join )。
外联接与内联接不一样外连接返回到查询结果中的不仅包含符合条件的行,还包括左表(左外连接),右表(右外连接)或者两个连接表(全外连接)中的所有不符合条件的数据行。
1.左联接 (left [outer] join)
左外联结就是将左表的所有数据分别于右表的每条数据进行连接组合,返回的结果除内连接的数据外,还有左表中不符合条件的数据,并在右表的相应列中填上null值。

SQL语句如下:

SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;

等价语句:

select o.id,o.order_number,o.customer_id,c.id,c.name from orders o,customers c where o.id=c.id(+);
2.右联接 (right [outer] join)
右外联结就是将右表中的所有数据分别与左表的每条数据进行连接组合,返回的结果除了内连接的数据外,还有右表中不符合条件的数据,并在左表相应的列中填上null值。
SQL语句如下:
SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME FROM ORDERS O RIGHT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
等价语句:
select o.id,o.order_number,o.customer_id,c.id,c.name from orders o,customers c where c.id(+)=o.id;
3.全外联接 (full [outer] join)
全外联接就是将左表的所有数据分别与右表的每条数据进行连接组合,返回的结果除了内连接的数据外,还有两个表中不符合条件的数据,并在左表或者右表的相应列中填上null值。
SQL语句如下:
SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME FROM ORDERS O FULL OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;

4.交叉连接(cross join)
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
SQL语句如下:
select o.id,o.order_number,o.customer_id,c.id,c.name from orders o, customers c

我们把select查出来的表当做左表join后的当做右表在 on的后面加条件

j_0003.gif

在orcal中(+)在等号左边的我们叫右连接,(+)在右边的我们叫左连接

你可能感兴趣的:(oracle,查询语句,小节)