[Oracle] JOIN, SQL실행순서
목차
JOIN
여러 테이블에 흩어져 있는 정보 중
사용자가 필요한 정보만 가져와서 가상의 테이블처럼 만들고 결과를 보여주는 것입니다.
정규화를 통해 조회 테이블이 너무 많이 쪼개져 있으면
작업이 불편하기 때문에 입력, 수정, 삭제의 성능을 향상시키기 위해서 JOIN을 통해 합친 후 사용합니다.
JOIN에는 크게 INNER JOIN과 OUTER JOIN 이있습니다.
INNER JOIN
--조건이 일치하는 값만 합쳐서 조회합니다.
1. ANSI 표준 조인 (JOIN절을 사용한 명시적인 JOIN)
SELECT 컬럼이름1, 컬럼이름2, ㆍㆍㆍ
FROM 테이블명1
INNER JOIN 테이블명2
ON 테이블명1.컬럼명 = 테이블명2.컬럼명;
※ 이 때, INNER은 생략이 가능합니다.
--PLAYER 테이블에서 송종국 선수가 속한 팀의 전화번호 검색하기
※ FROM 절에서 AS를 사용할 때에는 AS를 쓰지않고 띄어쓰기로만 사용해야 합니다.
![[Oracle] JOIN, SQL실행순서 - JOIN - INNER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - INNER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
![[Oracle] JOIN, SQL실행순서 - JOIN - INNER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - INNER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2. SELECT FROM을 이용한 조인
![[Oracle] JOIN, SQL실행순서 - JOIN - INNER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - INNER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
결과는 위와 동일합니다.
3. USING 을 이용한 조인
두 개의 테이블이 내부 조인으로 조인 될 때 조인하고자 하는 두 테이블의 컬럼명이 같을 경우
조인 조건을 길게 적지 않고 간단하게 적을 수 있도록 하는 역할을 합니다.
![[Oracle] JOIN, SQL실행순서 - JOIN - INNER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - INNER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
결과는 역시 위로 동일 합니다.
OUTER JOIN
OUTER(외부) JOIN 이란 조인 조건에서 동일한 값이 없는 행도 반환할 때 사용하는 구문입니다.
즉 A, B 테이블을 JOIN 할 경우, 조건에 맞지 않는 데이터도 표시하고 싶을 때 OUTER JOIN을 사용합니다.
INNER JOIN에서는 INNER가 생략이 되었지만, OUTER JOIN에서는 OUTER을 필수적으로 붙여줘야 합니다.
![[Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
1. LEFT OUTER JOIN
![[Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
![[Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2. RIGHT OUTER JOIN
![[Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
![[Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN [Oracle] JOIN, SQL실행순서 - JOIN - OUTER JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
3. FULL OUTER JOIN
문법은 위와 비슷하지만 실무에서는 거의 사용하지 않는 JOIN문 입니다.
SELF JOIN
셀프 조인이란 동일 테이블 사이의 조인을 말합니다.
따라서 FROM 절에 동일 테이블이 두 번 이상 나타납니다.
도일 테이블 사이의 조인을 수행하면 테이블과 컬럼 이름이 모두 동일하기 때문에
식별을 위해 반드시 테이블 별칭(Alias)을 사용해야 합니다.
그리고 컬럼에도 모두 테이블 별칭을 사용해서 어느 테이블의 컬럼인지 식별해줘야 합니다.
SELECT ALIAS명1.컬럼명
, ALIAS명2.컬럼명
FROM 테이블1 ALIAS명1, 테이블2 ALIAS명2
WEHRE ALIAS명1.컬럼명2 = ALIAS명2.컬럼명1;
밑의 사진과 같이 EMP테이블이 있습니다.
![[Oracle] JOIN, SQL실행순서 - JOIN - SELF JOIN [Oracle] JOIN, SQL실행순서 - JOIN - SELF JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
SELF JOIN을 하여 사원이름과 매니저 이름을 검색해 보면
![[Oracle] JOIN, SQL실행순서 - JOIN - SELF JOIN [Oracle] JOIN, SQL실행순서 - JOIN - SELF JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
![[Oracle] JOIN, SQL실행순서 - JOIN - SELF JOIN [Oracle] JOIN, SQL실행순서 - JOIN - SELF JOIN](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이렇게 나타나는것을 확인할 수 있습니다.
SQL 실행 순서
FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
ON절의 조건인 JOIN이 되면서 실행되고, WHERE절의 조건은 JOIN이 모두 끝나고 나서 실행됩니다.
ON과 WHERE를 같이 사용할 때와, ON만 사용할 때의 결과가 같다면
ON만 사용하는 것이 좋습니다.
'KoreaIt Academy > Oracle DBMS' 카테고리의 다른 글
[Oracle] 프로시저(Procedure) 생성 및 실행 (PL/SQL) (0) | 2021.08.11 |
---|---|
[Oracle] 뷰(VIEW) (0) | 2021.08.10 |
[Oracle] 옵티마이저(OPTIMIZER) , 힌트(hint) (0) | 2021.08.09 |
[Oracle] SQL문의 활용, 함수(집계함수, 그룹함수 등..) (0) | 2021.08.09 |
[Oracle] 정규화 (0) | 2021.08.09 |
댓글