JOIN, UNION, UNION

byeolhee·2022년 11월 8일
0
post-custom-banner

쿼리문이란 쉽게 쓰려고 하긴 하는데 점점 어려워 지는거 같다.

JOIN과 UNION 차이는 뭘까?

MYSQL하면 JOIN이 얼마나 중요한지 다들 알게 될것이다.
둘 이상의 데이터를 결합하는데 사용하는 부분에서 JOIN과 UNION은 같지만 얻은 결과의 데이터 형식, 결합하는 방식이 다르다.

JOIN 같은경우 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과의 집합으로 만들어준다.(SELECT 문과 주로 사용) ON을 사용하여 A.KEY = B.KEY 로 묶어서 사용한다.

[JOIN 종류]

  • INNER JOIN : 기본적이고 널리사용. 기준 테이블과 비교테이블 같이 포함된것.
    기준 테이블인 A에 포함된 것 뿐만아닌 비교하는 B에 있는 정보 까지 조회
    예를 들어, A의 물품 구매정보를 조회하고 그 구매정보에 있는 KEY를
    대조해 B 테이블에 교집합에 조회되는 고객정보 등을 조회 하는것이다.

    다이어그램은 ppt로 그리기 힘들어서 대강 잘 보면 될거같다. ㅜ
  • LEFT JOIN : A와 B가 있을때 A 집합에 있는 모든 데이터만 가져온다고 생각하자.
    A의 KEY 값과 B의 KEY값이 같은거만 가져온다.

  • RIGHT JOIN : LEFT JOIN에서 RIGHT 로 바뀐것. A의 KEY와 B의 키를 묶어서 B에
    해당하는것을 가져온다.

  • OUTER JOIN : LEFT/RIGHT OUTER JOIN 두가지로 나뉜다.
    한 쪽에 데이터가 없는 경우 데이터가 있는 쪽의 테이블을 모두
    출력하는것이 OUTER JOIN. 즉, ON 조건 중 한쪽 데이터를 모두 가져온다.

  • FULL OTHER JOIN : 양쪽 모두 조건이 일치하지 않는것 까지 결합해서 가져온다.
    -> MYSQL 에서 지원하지 않아 RIGHT, LEFT JOIN 한걸 따로 처리해야한다.

아무튼 JOIN은 이런 종류들이 있고 2개의 테이블을 하나의 데이터로 사용하기 좋은 방법이다. 그러면 UNION은 뭘까?

[UNION]

여러개의 SELECT 문과 결과를 하나의 테이블로 보여주는 표현을 할 때 자주사용 한다. 2개 이상의 쿼리 결과를 단일 결과 세트로 연결한다.
여기서 UNION (중복항목 제외), UNION ALL(중복항목 포함) 로 구분져서 사용한다.

조건

  • 선택된 필드(열)의 개수와 순서가 모든 쿼리에서 동일해야한다..
  • 대응하는 필드의 이름이 같아야하며 같지않으면 as 로 같게 만들어 주어야 한다.
  • 대응되는 각 필드의 타입(데이터형식, 문자면 문자)이 같아야한다.

서브쿼리할때 유용하게 종종 쓰이곤 하니 잘 사용해보자.

둘의 차이점은 UINON 으로 조회했을 때 하나의 결과 세트만이 나타나고 JOIN은 적어도 하나의 속성이 공통인 두 테이블 속성을 결합하고자 할때 사용하는것이다.

기회가 된다면 예제문으로 보완해야 겠다.

profile
데이터 우주를 헤맵니다. 응답하라 데이터
post-custom-banner

0개의 댓글