ORACLE_OCP之SQL_内外连接(IN-OUTER)
-
默认为内连接
- 输出匹配内容:因为是默认,所以以下写法都是可以的
//where 表示
SELECT * FROM EMPLOYEES E LEFT WHERE DEPARTMENTS D
ON E.DEPARTMENT_ID=D.DEPARTMENT_ID;
//直接jion表示
SELECT * FROM EMPLOYEES E JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID=D.DEPARTMENT_ID;
//inner jion显示表示
SELECT * FROM EMPLOYEES E LEFT INNER JION DEPARTMENTS D
ON E.DEPARTMENT_ID=D.DEPARTMENT_ID; -
外连接:左外连接、右外连接
- 左外连接
//说明:在左外连接时输出LEFT JOIN左侧(驱动表)的所有内容,而LEFT JOIN右侧的表只输出匹配内容(匹配表)
SELECT * FROM EMPLOYEES E LEFT JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID=D.DEPARTMENT_ID;特别注意:无论驱动表匹不匹配都会输出包括null值,匹配表如果没有匹配项则以null输出
- 右外连接
//说明:在左外连接时输出RIGHT JOIN右侧(驱动表)的所有内容,而RIGHT JOIN左侧的表只输出匹配内容(匹配表)
SELECT * FROM EMPLOYEES E RIGHT JOIN DEPARTMENTS D ON E.DEPARTMENT_ID=D.DEPARTMENT_ID;特别注意:无论驱动表匹不匹配都会输出包括null值,匹配表如果没有匹配项则以null输出
- 全外连接
//说明:在全外连接时,所有表都外驱动表,输出所有驱动表的内容,不管是否匹配,一律输出,无匹配项时以null填充
SELECT * FROM EMPLOYEES E FULL JOIN DEPARTMENTS D ON E.DEPARTMENT_ID=D.DEPARTMENT_ID; -
Cartesian Products(笛卡尔积)
- 笛卡尔积是一个表的每一行与另一个表的每一行的连接(两个表行数的乘积)
- 笛卡尔积会产生大量行,并且结果很少有用
SELECT * FROM EMPLOYEES E CROSS JOIN DEPARTMENTS D;