쿼리문이란 쉽게 쓰려고 하긴 하는데 점점 어려워 지는거 같다.
MYSQL하면 JOIN이 얼마나 중요한지 다들 알게 될것이다.
둘 이상의 데이터를 결합하는데 사용하는 부분에서 JOIN과 UNION은 같지만 얻은 결과의 데이터 형식, 결합하는 방식이 다르다.
JOIN 같은경우 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과의 집합으로 만들어준다.(SELECT 문과 주로 사용) ON을 사용하여 A.KEY = B.KEY 로 묶어서 사용한다.
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은 뭘까?
여러개의 SELECT 문과 결과를 하나의 테이블로 보여주는 표현을 할 때 자주사용 한다. 2개 이상의 쿼리 결과를 단일 결과 세트로 연결한다.
여기서 UNION (중복항목 제외), UNION ALL(중복항목 포함) 로 구분져서 사용한다.
조건
서브쿼리할때 유용하게 종종 쓰이곤 하니 잘 사용해보자.
둘의 차이점은 UINON 으로 조회했을 때 하나의 결과 세트만이 나타나고 JOIN은 적어도 하나의 속성이 공통인 두 테이블 속성을 결합하고자 할때 사용하는것이다.
기회가 된다면 예제문으로 보완해야 겠다.