JOIN : 원하는 결과를 얻기 위해 하나 이상의 테이블에서 데이터를 조회하기 위해 사용, 결과는 하나의 Result set
💡컬럼 값이 같아야 연결 가능
Inner join : A와 B의 교집합 (공통부분)
Outer join : A와 B의 합집합

1) 오라클 전용 구문
FROM절에 합칠 테이블명을 ,로 구분하여 작성
SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE
-- DEPT_CODE대신 DEPT_ID도 가능 같은 컬럼값 가지고 잇기 때문에
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE = DEPT_ID
-- DEPT_CODE와 DEPT_ID가 같은 애들만 연결해서 보여줘라
AND EMP_NAME = '대북혼';
2) ANSI 표준 구문
FROM절에 JOIN을 이용하여 합칠 테이블명 작성
SELECT EMP_ID, EMP_NAME, DEPT_ID, DEPT_TITLE
FROM EMPLOYEE
JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID)
WHERE EMP_NAME = '대북혼';
1) OUTER JOIN
: 다른 값도 같이 조인됨
1-1) LEFT [OUTER] JOIN : JOIN의 왼쪽 테이블의 행의 개수를 기준으로 (EMPLOYEE의 행의 개수 = 23)
--ANSI 기준--
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
LEFT OUTER JOIN DEPARTMENT ON (dEPT_CODE = DEPT_ID);
-- NULL값 까지 같이 나옴
--오라클 기준--
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE = DEPT_ID(+);
--기준이 아닌 테이블 컬럼에 +를 붙여주어야함
1-2) RIGHT [OUTER] JOIN : JOIN의 오른쪽 테이블의 행의 개수를 기준으로
-- ANSI 기준 --
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
RIGHT OUTER JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID); -- 이오리 하동운 XX
-- 오라클 기준 --
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE(+) = DEPT_ID;
1-3) FULL [OUTER] JOIN : 둘 다 기준으로 삼음
--ANSI 기준--
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
FULL JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);
2) 다중조인
-- 오라클 기준 --
SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE, LOCAL_NAME
FROM EMPLOYEE, DEPARTMENT, LOCATION
WHERE DEPT_CODE = DEPT_ID
AND LOCATION_ID = LOCAL_CODE;
-- ANSI 기준 --
SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE, LOCAL_NAME
FROM EMPLOYEE
JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID)
JOIN LOCATION ON (LOCATION_ID = LOCAL_CODE);
--JOIN LOCATION ON (LOCATION_ID = LOCAL_CODE)
--OIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);
--💡ANSI는 순서 영향을 받기 때문에 오류남 오라클은 순서 상관 없음