JOIN
•
두 개 이상의 테이블들은 연결 또는 결합하여 데이터를 출력하는 것
•
연산자에 따라 JOIN 방식 분류 시
◦
EQUI JOIN
◦
non EQUI JOIN
EQUI JOIN(등가 교집합)
•
두 개의 테이블 간에 서로 정확하게 일치하는 경우를 활용하는 조인
→ 등가 연산자를 사용한 조인을 의미 ' = '
•
대부분 기본키-외래키 관계를 기반으로 발생하나, 모든 조인이 그런 것은 아님
→ 꼭 그런것은 아니지만 그게 일반적이다
Non EQUI JOIN(비등가 교집합)
•
두 개의 테이블 간에 서로 정확하게 일치하지 않은 경우를 활용하는 조인
→ 등가 연산자 이외의 연산자들을 사용한 조인을 의미
'>' '≥' '≤' '<' 'BETWEEN'
FROM 절 JOIN 형태
Inner join
•
내부 Join이라고 하며 Join 조건에서 동일한 값이 있는 행만 반환
•
Join의 기본 값으로 'Inner' 생략 가능
Using 조건절
•
같은 이름을 가진 칼럼들 중 원하는 칼럼에 대해서만 선택적으로 등가 조인 가능
SQL Server 에서는 지원 X
→ 굳이 테이블 1의 컬럼명, 테이블2의 컬럼명을 적어줄 필요 없음
Natural join
•
두 테이블 간의 동일한 이름을 갖는 모든 칼럼들에 대해 등가 조인을 수행
→ Natural Join 자체가 동일한 이름을 갖는 모든 칼럼에 자동으로 등가 조인 수행
Cross join
•
join 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 조회
→ 모든 데이터의 경우의 수를 조합하여 조회
•
Cross join도 'cross'를 생략할 수 있음. inner join도 생략 가능한데 이너조인은 'on'조건절나 using을 필수적으로 사용해야하는데, 그 두개가 없으면 자동적으로 'cross join'으로 인식
Outer join (left, right, full)
•
두 개의 테이블 간에 교집합을 조회하고 한쪽 테이블에만 있는 데이터도 포함시켜서 조회
•
빈 곳은 NULL 값으로 출력
•
where 조건절에서 한쪽에만 있는 데이터를 포함시킬 테이블 쪽으로(+)를 위치
•
표준 outer join(left join)
•
표준 outer join(right join)
•
표준 outer join(full outer join)
표준 Outer join(full outer join) in MySQL
•
union은 중복된건 지워주기 때문에, outer join이 지원되지 않는 maria DB에서는 union을 사용하면 full outer join의 결과를 낼 수 있음
Inner vs Outer vs Cross join 비교
•
inner join → 2개 행
•
cross join → 12개 행
•
left outer join → 4개 행
•
right outer join → 3개 행
•
full outer join → 5개 행
FROM 절 JOIN 형태 + Where
•
join을 활용한 쿼리에서도 where문을 이용하여 조건을 걸 수 있음
셀프 조인
•
동일 테이블 사이의 조인 →
이를 수행하면 테이블과 칼럼 이름이 모두 동일하기 때문에 식별을 위해 별칭 필수
자기 자신을 조인하는거기 때문에 각각에 대한 별칭 필수
셀프 조인 예시
•
기존에는 테이블 1,2에대한 join을 했었는데 이제는 테이블 1이 자기 자신을 조인 함





















