8. DB - (JOIN)
JOIN
join 이란 테이블 두개를 하나 이상의 공통 컬럼을 이용해서 합치는 것.
주로 부모-자식 관계에서 많이 일어나지만, 공통 컬럼만 있다면 부모자식이 아니어도 상관 없다.
JOIN 의 종류
cross join
크로스 조인은 두 테이블에 대해 카테시안 곱을 수행한다.
카테시안 곱이란 두개 이상의 테이블을 조인할 때, 모든 행을 서로 곱하는 것이다.
따라서 emp테이블(10) * dept테이블(4) = 40 이 나오게 된다.
크로스 조인은 cross join 이라는 명령어를 생략해도 된다.
select * from emp e cross join dept d;
-- cross join 은 생략 가능
select * from emp e, dept d;
크로스 조인은 정제되지 않은 형태이므로 일반적으로 많이 쓰이지는 않는다.
등가 조인
Equi Join 이라고도 한다.
등가 조인은 두 테이블에 컬럼값이 같을 때 연결하는 방식이다.
등가 조인은 컬럼 값이 동일한 것만 출력된다.
예를 들어 A 테이블에 deptno 컬럼에는 1,2,3이 있고,
B 테이블에 deptno 컬럼에는 1,2,3,5 가 있다면 5는 아예 출력되지 않는다.
내부 조인
Inner Join 이라고도 한다.
내츄럴 조인
Natural Join 이라고도 한다.
자동으로 컬럼 이름을 기준으로 결합: 내츄럴 조인은 두 테이블에서 같은 이름을 가진 컬럼들을 기준으로 자동으로 조인됩니다. 별도로 ON 절을 지정할 필요가 없습니다.
중복된 컬럼 제거: 동일한 컬럼 이름을 기준으로 조인하기 때문에, 두 테이블에서 동일한 컬럼이 결과에 중복되어 나오는 일이 없습니다. 즉, 동일한 컬럼이 한 번만 결과에 표시됩니다.
외부 조인
등가 조인에서는 어느 한쪽 테이블에 더 많은 데이터가 있다고 해도 보여주지 않는다.
그러나 외부 조인에서는 이 데이터를 보여 준다.
left join & right join
left join 은 왼쪽 테이블에 더 많은 데이터가 있을 경우에 사용
right join 은 오른쪽 테이블에 더 많은 데이터가 있을 경우에 사용