DB/Oracle

DB 42강. 조인 - 동일 조인(INNER JOIN) ★

JJJAEOoni 2022. 2. 14. 17:30
반응형

동일 조인 : 동일한 것만 뽑을게!

 

JOIN 앞뒤로 적어주는

테이블의 순서도 중요하다.

 

-- 뭘로 JOIN할건지 ON에서 지정
SELECT e.ename, e.deptno, d.dname, d.loc
FROM emp e INNER JOIN dept d
ON e.deptno = d.deptno;

 

연산 수행 순서는

 

JOIN의 왼쪽에 적은 테이블에서

우선 1행을 보고,

맨 끝 DEPTNO의 20을 보고

오른쪽 테이블로 가서

DEPTNO가 20인 행을 찾는다.

 

같은 값을 찾는 게 동일 조인이기 때문이다.

 

총 3번의 연산을 했다.

 

20이라는 값을 찾고 난 이후에

아래에 20이 더 있는지 확인을 할까,

20을 찾았으니 연산을 멈출까?

 

멈추게 된다.

 

DEPTNO는 DEPT 테이블의 PK(기본키)이기 때문이다.

아래에 20이 더 이상 있을 리가 없다.

 

만약 DEPT 테이블이 JOIN 앞에 적혀있다면

DEPT 테이블을 먼저 연산할 텐데

 

DEPT 테이블의 DEPTNO가 10번이고

EMP 테이블로 넘어가 DEPTNO가 10번인 행을 찾을 때

동일한 값을 찾아도 아래에 계속해서 찾아야 한다.

 

EMP 테이블에는 DEPTNO가

PK가 아니기 때문이다.

 

따라서 JOIN 양옆에 테이블을

적는 순서도 매우 중요하다.

연산 수행 속도가 달라지기 때문이다.

 

그래서 PK가 있는 테이블이

JOIN 뒤쪽에 쓰여야 한다.

 

 

공식

 

위에서 이해하고 난 뒤에는

공식을 적용해서 사용하는 게 편하다.

 

왼쪽에 있는 테이블을 

driving 테이블이라고 하고,

 

오른쪽에 있는 테이블을

driven 테이블이라고 한다.

 

왼쪽 테이블이 운전을 하고

오른쪽 테이블이 운전을 당하는 것이다.

 

driven 테이블에 PK(기본키)가 있어야 한다.

 

이때 dept 테이블의 deptno는 PK이고,

emp 테이블의 deptno는 FK라고 한다.

 

외래키(Foreign Key)

 

외래키를 통해 연결되어 있는 것이다.

 

즉 FK와 PK가 같은 것을 연결해주는 조인이

INNER JOIN이다.

 

 

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

 

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형