UNION

  • 여러개의 SQL문을 합쳐서 하나의 SQL문으로 만들어주는 방법

    주의 : 칼럼의 개수가 같아야함

union : 중복된 값을 제거하여 알려준다
union all : 중복된 값도 모두 보여준다

select column1, column2, ...
from tableA
union | union all
select column1, column2,...
from tableB;

실습 : 성별이 여자인 데이터를 검색하는 쿼리와 소속사가 YG엔터테이먼트인 데이터를 검색하는 쿼리를 UNION ALL로 실행 '이수현'은 여성이면서도 'YG엔터테이먼트' 소속이기 때문에 중복으로 나옴

join

  • 두 개 이상의 테이블을 결합하는 것

JOIN의 기초 문법 안내
JOIN 원하는 테이블 AS 약칭 ON 기준1 = 기준2
- Tip1. 기준1과 기준2는 데이터 구조도 동일하게 하는 것을 권장한다.

inner join

  • 교집합에 해당되는 개념

left outer join

  • Left Join = Left Outer Join

왼쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 null 값으로 채워짐.

right outer join

  • Right Join = Right Outer Join

오른쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 null 값으로 채워짐.

full outer join

  • mysql 에서는 사용불가 ㅜ
  • 공통된 부분만 골라 결합하는 Inner Join 과 다르게 공통되지 않은 행도 유지한다.

이때 두 테이블 모두의 값을 유지하면 Full Outer Join
왼쪽 테이블 값만 유지하면 Left Outer Join
오른쪽 테이블 값만 유지하면 Right Outer Join

MySQL에서는 FULL OUTER JOIN을 지원하지 않으므로 LEFT OUTER JOIN 결과와 RIGHT OUTER JOIN결과를 UNION 하여 사용해야 함

self join

  • 같은 테이블의 레코드 사이에서도 일정한 관련성이 존재할 수 있기 때문에 셀프조인을 사용하기도 한다. 이렇게 동일한 테이블을 조인하는 것을 셀프 조인이라고 함. 이때 양 테이블을 구분하기 위해서 alias 별칭을 반드시 지정해주어야 한다.

self join은 주로 테이블에 Hierarchical structure가 있을 때 flat structure로 바꾸는 역할을 해준다. 예를 들어 설명하자면, employee 들의 정보가 담긴 테이블이 아래처럼 있다고 하자.

위 테이블을 보면 김수현과 이민호가 다 노은지에게 보고를 하게 된다. 이 때 김수현과 이민호의 상사 이름을 같은 행에 출력하고 싶을 때 self join을 쓰면 되는것!.

profile
뭐가 됐든 데이터분석가

0개의 댓글