[DB] JOIN과 UNION 연산자

나무나무·2025년 3월 28일

DB

목록 보기
7/9

💡 조인(JOIN)

  • 두 테이블을 묶어서 하나의 결과 집합으로 만드는 것을 말함.

내부 조인(INNER JOIN)

  • 조인 중에서 가장 많이 사용되는 조인임.
  • 두 테이블에서 해당 조건을 모두 만족하는 행만 조회됨 .
SELECT emp_id,
		emp_name,
		dept_id,
		dept_title
FROM employee
INNER JOIN department ON dept_code = dept_id;

SELECT employee.emp_id,
		employee.emp_name,
		employee.job_code,
		job.job_name
FROM employee
INNER JOIN job ON employee.job_code = job.job_code;

외부 조인(OUTER JOIN)

  • 조인 조건에 만족되지 않는 행까지도 조회하기 위해 사용
  • LEFT OUTER JOIN : 구문 기준 왼쪽 테이블의 모든 데이터 조회
  • RIGHT OUTER JOIN : 구문 기준 오른쪽 테이블의 모든 데이터 조회
SELECT e.emp_name,
		d.dept_id,
		d.dept_title,
		e.salary
FROM employee AS e 
LEFT OUTER JOIN department AS d ON e.dept_code = d.dept_id
ORDER BY e.dept_code;

-- 2) RIGHT OUTER JOIN : RIGHT JOIN 기준 오른쪽 테이블 내용을 조회함.
SELECT e.emp_name,
		d.dept_id,
		d.dept_title,
		e.salary
FROM employee AS e 
RIGHT OUTER JOIN department AS d ON e.dept_code = d.dept_id
ORDER BY e.dept_code;

크로스 조인(CROSS JOIN)

  • 한 쪽 테이블의 모든 행, 다른 쪽 테이블의 모든 행을 출력.
  • 조회 개수 : 각 테이블의 데이터 개수의 곱 → 가능한 모든 경우를 출력하는 셈.
  • 데이터가 많을 수록 조회되는 데이터 양이 늘어나기 때문에 자주 쓰이지는 않음(참고만ㅇㅇ)
SELECT emp_name,
		dept_title
FROM employee
CROSS JOIN department;

자체 조인(SELF JOIN)

  • 동일한 테이블을 가지고 조인해서 데이터를 조회함
SELECT *
FROM employee;
-- manager_id 는 사수의 사번을 의미함.

SELECT e.emp_name AS '직원명',
		e.emp_id AS '사번',
		e.dept_code AS '부서코드',
		e.manager_id AS '사수코드',
		M.emp_id AS '사수사번',
		M.emp_name AS '사수이름'
FROM employee AS e 
LEFT OUTER JOIN employee AS M ON M.emp_id = e.manager_id
ORDER BY `사수코드`;

비등가 조건

  • ‘=’을 조건으로 사용하지 않는 경우

UNION/UNION ALL 연산자

  • 두 쿼리의 결과를 하나로 합치는 연산자
  • 세미콜론은 제일 마지막 쿼리문에만 붙임
  • 동일한 값을 갖는 경우 제거되고 데이터가 자동으로 정렬됨
  • UNION ALL은 중복된 열까지도 모두 출력됨
  • JOIN은 가로로 연결해서 결과를 합치는 거라면, UNION은 세로로 합침.
  • 얘네는 사실상 비교 연산자로 처리가 가능하기 때문에 그렇게 자주 쓰지는 않음.
profile
백엔드 개발자 나무입니다

0개의 댓글