연결되는 컬럼의 값이 일치하는 행들만 조인됨 (== 일치하는 값이 없는 행은 조인에서 제외)
SELECT EMP_NO, EMP_NAME, DEPT_CODE, DEPT_TITLE
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID);
SELECT EMP_NO, EMP_NAME, DEPT_CODE, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE = DEPT_ID;
SELECT EMP_ID, EMP_NAME, JOB_CODE, JOB_NAME
FROM EMPLOYEE
JOIN JOB USING(JOB_CODE);
SELECT EMP_ID, EMP_NAME, e.JOB_CODE, JOB_NAME
FROM EMPLOYEE e , JOB j
WHERE e.JOB_CODE = j.JOB_CODE ;
두 테이블의 지정하는 컬럼값이 일치하지 않는 행도 조인에 포함을 시킴
합치기에 사용한 두 테이블 중 왼편에 기술된 테이블의 컬럼 수를 기준으로 JOIN
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE LEFT OUTER JOIN DEPARTMENT
ON(DEPT_CODE = DEPT_ID); -- 부서가 없는 사원도 포함
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE = DEPT_ID(+);
합치기에 사용한 두 테이블 중 오른편에 기술된 테이블의 컬럼 수를 기준으로 JOIN
SELECT EMP_NAME , DEPT_TITLE
FROM EMPLOYEE RIGHT JOIN DEPARTMENT
ON(DEPT_CODE = DEPT_ID); -- 사원이 없는 부서도 포함
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE(+) = DEPT_ID;
합치기에 사용한 두 테이블이 가진 모든 행을 결과에 포함
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
FULL JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID);
※※ 잘 안씀!! (참고 정도만)
조인되는 테이블의 각 행들이 모두 매핑된 데이터가 검색되는 방법(곱집합)
SELECT EMP_NAME , DEPT_TITLE
FROM EMPLOYEE
CROSS JOIN DEPARTMENT; -- 207행 == EMPLOYEE 23행 * DEPARTMENT 9행 == 207행
※※ 잘 안씀!! (참고 정도만)
지정한 컬럼 값이 일치하는 경우가 아닌, 값의 범위에 포함되는 행들을 연결하는 방식
SELECT EMP_NAME , SALARY , SAL_GRADE.SAL_LEVEL
FROM EMPLOYEE
JOIN SAL_GRADE ON(SALARY BETWEEN MIN_SAL AND MAX_SAL);
자기 자신(같은 테이블)과 조인을 맺음
--> 같은 테이블 2개가 있다고 생각하기!
-- 사번, 이름, 사수의 사번, 사수 이름 조회
SELECT e1.EMP_ID , e1.EMP_NAME ,
NVL(e1.MANAGER_ID,'-') , NVL(e2.EMP_NAME, '-')
FROM EMPLOYEE e1
LEFT JOIN EMPLOYEE e2 ON(e1.MANAGER_ID = e2.EMP_ID);
SELECT e1.EMP_ID , e1.EMP_NAME ,
NVL(e1.MANAGER_ID,'-') , NVL(e2.EMP_NAME, '-')
FROM EMPLOYEE e1 , EMPLOYEE e2
WHERE e1.MANAGER_ID = e2.EMP_ID (+);
동일한 타입과 이름을 가진 컬럼이 있는 테이블 간의 조인을 간단히 표현하는 방법
--> 반드시 두 테이블 간의 동일한 컬럼명, 타입을 가진 컬럼이 필요
---> 없을 경우 교차조인됨
SELECT EMP_NAME, JOB_NAME
FROM EMPLOYEE
NATURAL JOIN JOB;
N개의 테이블을 조회할 때 사용
--> 순서 중요!!
SELECT EMP_NAME, DEPT_TITLE, LOCAL_NAME
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN LOCATION ON(LOCATION_ID = LOCAL_CODE);
SELECT EMP_NAME , DEPT_TITLE, LOCAL_NAME
FROM EMPLOYEE, DEPARTMENT, LOCATION
WHERE DEPT_CODE = DEPT_ID
AND LOCATION_ID = LOCAL_CODE;