[Oracle] Join

Dawon Ruby Choi·2023년 9월 19일
0

JOIN : 원하는 결과를 얻기 위해 하나 이상의 테이블에서 데이터를 조회하기 위해 사용, 결과는 하나의 Result set

💡컬럼 값이 같아야 연결 가능

Inner join : A와 B의 교집합 (공통부분)
Outer join : A와 B의 합집합

  • Left outer join : A
  • Rigth outer join : B
    (FULL OUTER JOIN의 경우 빼고는 특정 테이블을 기준으로 데이터를 보여준다. 없는건 null값 처리)
  • Full 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는 순서 영향을 받기 때문에 오류남 오라클은 순서 상관 없음
profile
나의 코딩 다이어리🖥️👾✨

0개의 댓글