- 조인과 조인종류
- 구버전 조인, 신버전 조인
- 멀티 조인
조인이란?
JOIN(조인)은 테이블(뷰)과 테이블(뷰)을 합치는 것을 말하는데
행(ROW) 과 행(ROW)을 합치는 것이 아니라, 컬럼(COLUMN) 과 컬럼(COLUMN)을 합치는 것을 말한다.
위에서 말한 행(ROW) 과 행(ROW)을 합치는 것은 UNION 연산자를 사용하는 것이다.
조인에는 INNER JOIN(내부조인) 과 OUTER JOIN(외부조인) 이 있다.
OUTER JOIN은 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL JOIN으로 또 나뉜다.
※면접 질문으로 많이 물어보는 부분이다.
질문: INNER(내부조인) 과 OUTER JOIN(외부조인)의 차이점에 대해 말해보세요.
나의 답변: INNER JOIN은 테이블에서 일치하는 레코드만을 합치지만, OUTER JOIN은 일치하지 않더라도 버리지 않고 NULL로 채워서 응답하는 조인을 말합니다.
질문 : JOIN과 UNION의 차이점에 대해서 말해보세요
나의 답변 : JOIN은 테이블끼리 컬럼들을 합치는것이고, UNION은 테이블들끼리 행을 합치는 것을 말합니다.
구버전 조인, 신버전 조인
구버전 조인 : SQL 1992 CODE 방식 --> 테이블(뷰) 과 테이블(뷰) 사이에 콤마(,)를 찍어주는 것.
콤마(,)를 찍어주는 것을 제외한 나머지 문법은 데이터베이스 밴더(회사) 제품마다 조금씩 다르다.
신버전 조인 : SQL 1999 CODE 방식(ANSI) --> 테이블(뷰) 과 테이블(뷰) 사이에 JOIN 이라는 단어를 넣어주는 것.
ANSI(표준화) SQL
JOIN 조건에는 ON을 써주면 된다.
SELF JOIN
자기자신의 테이블(뷰)을 자기자신의 테이블(뷰)과 JOIN 시키는 것을 말한다.
※ 이때 반드시 테이블(뷰)에 대한 alias(별칭)를 다르게 주어서 실행해야 한다.
SELF JOIN 예제
select E1.employee_id AS 사원번호
, E1.first_name || ' ' || E1.last_name AS 사원명
, E1.email AS 이메일
, E1.salary AS 급여
, E2.employee_id AS 직속상관번호
, E2.first_name || ' ' || E2.last_name 직속상관명
from employees E1 LEFT JOIN employees E2
ON E1.manager_id = E2.employee_id
order by 1;
- 오른쪽 EMPLOYEES 테이블(E1) 에 있는 직속 상사 번호(MANAGER_ID)와, 왼쪽 EMPLOYEES 테이블(E2)
에 있는 사원번호(EMPLOYEE_ID) 를 매핑시켜서
E2에 있는 테이블은 직속상관의 테이블로 만든뒤에, E2에서 이름을 뽑아 직속상관명이라는 컬럼을 새로 만들었다.
Multi Table Join (다중 테이블 조인)
- 3개 이상의 테이블(또는 뷰)을 가지고 조인하는 것이다.
- Muilti Table Join을 할 땐 부모 테이블 부터 시작하는것이 편하다.
select *
from REGIONS R
JOIN COUNTRIES C
ON R.region_id = C.region_id
JOIN LOCATIONS L
ON C.country_id = L.country_id
JOIN DEPARTMENTS D
ON L.location_id = D.location_id
JOIN EMPLOYEES E
ON D.department_id = E.department_id
order by 1;
-- 106개 행이 나온다.
조인은 실무에서 굉장히 자유자재로 사용해야하는 부분이기 때문에 중요하다.
다양한 예제들을 풀어보면서 숙달하는것이 중요하겠다.
'개발 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 Set Operator(SET 연산자,집합연산자) (0) | 2022.07.21 |
---|---|
[Oracle] 오라클 Join 과제하기 (0) | 2022.07.20 |
[Oracle] 오라클 상관서브쿼리를 사용한 UPDATE 처리하기 (0) | 2022.07.20 |
[Oracle] 오라클 서브쿼리(Sub Query) (0) | 2022.07.20 |
[Oracle] 오라클 그룹 함수(집계 함수) (0) | 2022.07.20 |
개발을 하며 만났던 문제들과 해결 과정, 공부한 내용 등을 기록합니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!