◆SQL/SELECT
[SQL] JOIN / UNION 차이?
쿠키린
2024. 8. 9. 00:34
JOIN과 UNION은 SQL에서 데이터를 결합하기 위해 사용되는 두 가지 주요 연산
JOIN(두 테이블을 연결하여 일치하는 행을 반환)
JOIN은 두 개 이상의 테이블을 연결하여 각 테이블의 관련된 행을 결합하는 데 사용됩니다. 주로 테이블 간의 관계를 나타내는 열(주로 키 열)을 기반으로 데이터를 결합합니다.
- INNER JOIN: 두 테이블에서 일치하는 행만 반환합니다.
- LEFT JOIN (LEFT OUTER JOIN): 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 행을 반환합니다. 일치하지 않는 경우, 오른쪽 테이블의 값은 NULL로 표시됩니다.
- RIGHT JOIN (RIGHT OUTER JOIN): 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 일치하는 행을 반환합니다. 일치하지 않는 경우, 왼쪽 테이블의 값은 NULL로 표시됩니다.
- FULL JOIN (FULL OUTER JOIN): 두 테이블에서 일치하는 행뿐만 아니라 일치하지 않는 행도 모두 반환합니다. 일치하지 않는 경우, 일치하지 않는 테이블의 값은 NULL로 표시됩니다.
예시:
SELECT a.name, b.department FROM employees a INNER JOIN departments b ON a.department_id = b.id;
UNION( SELEC문의 결과를 하나의 결과 집합으로 결합 - 결합된 행들의 집합)
UNION은 두 개 이상의 SELECT 문의 결과를 결합하여 하나의 결과 집합으로 만드는 데 사용됩니다.
각 SELECT 문의 결과 집합이 동일한 수의 열을 가져야 하며, 열의 데이터 타입도 호환되어야 합니다.

예시:
SELECT name FROM employees
UNION
SELECT name FROM customers;
UNION 꼭 기억해야할 부분
ORDER BY절은 UNION 함수를 사용한 다음 제일 마지막에 작성해야한다. 실행순서상 정렬은 UNION 다음에 일어나게 되어있다. 위 쿼리에서도 마지막에서 정렬을 시켜준 걸 볼 수 있다. 중간에 넣게되면 에러로 쿼리가 제대로 실행되지 않는다.
반대로 ORDER BY절에 작성하게 되는 컬럼명은 제일 첫번째로 작성된 쿼리에 있는 컬럼명 혹은 ALIAS명이어야 한다. 그이유는 UNION은 컬럼의 갯수만 맞으면 결과를 합쳐서 보여주는 것이지 컬럼명과 결과값은 상관이 없기 때문이다.
차이점 요약
- JOIN은 여러 테이블의 관련된 행을 기준으로 데이터를 병합합니다. 결과는 결합된 행들로 구성됩니다.
- UNION은 여러 SELECT 문의 결과를 하나의 결과 집합으로 결합합니다. 결과는 결합된 행들의 집합입니다.
JOIN은 주로 테이블 간의 관계를 바탕으로 데이터를 조합하는 데 사용되고,
UNION은 별도의 결과 집합을 하나로 합치는 데 사용된다는 점에서 차이가 있습니다.
