데이터베이스- JOIN문

서린·2024년 3월 7일
0

greenstudy

목록 보기
11/44
post-thumbnail

JOIN문 이란?

  • 두개 이상의 테이블을 묶어서 하나의 결과 집합으로 출력

INNER JOIN

  • 두 테이블이 공통적으로 만족하는 레코드를 출력(교집합)
-- 사원 번호, 이름, 소속부서를 출력
-- INNER JOIN 안쓰고 JOIN으로 생략가능

SELECT 
   emp.emp_no
   ,emp.first_name
   ,depte.dept_no
FROM employees emp
   INNER JOIN dept_emp depte
	  ON emp.emp_no = depte.emp_no
WHERE depte.to_date >= NOW();	  

-- 사원 번호, 이름 , 소속부서코드 ,부서명을 출력
-- 테이블 세개연결
SELECT 
   emp.emp_no
   ,emp.first_name
   ,depte.dept_no
   ,dept.dept_name
FROM employees emp
   JOIN dept_emp depte 
	   ON emp.emp_no = depte.emp_no
	JOIN departments dept 
	   ON depte.dept_no = dept.dept_no
WHERE depte.to_date >= NOW()
ORDER BY emp.emp_no;

LEFT OUTER JOIN

  • LEFT JOIN으로 줄여서 많이 사용
  • 왼쪽 테이블을 기준 테이블로 두고 JOIN을 실행
  • 기준 테이블의 모든 데이터를 출력하고
  • 조인 대상 테이블에 없는 값은 NULL로 출력
-- 사원 번호, 이름 , 소속부서를 출력

SELECT 
   emp.emp_no
   ,emp.first_name
	,depte.dept_no
FROM employees emp 
   LEFT JOIN dept_emp depte
     ON emp.emp_no = depte.emp_no
;

RIGHT OUTER JOIN

  • 오른쪽 테이블을 기준 테이블로 두고 JOIN을 실행
  • 기준 테이블의 모든 데이터를 출력하고
  • 조인 대상 테이블에 없는 값은 NULL로 출력
- 사원 번호, 이름 , 소속부서를 출력
SELECT 
   emp.emp_no
   ,emp.first_name
	,depte.dept_no
FROM employees emp 
   RIGHT JOIN dept_emp  depte
     ON emp.emp_no = depte.emp_no
     ;

UNION

  • 두개 이상의 쿼리의 결과를 합쳐서 출력
  • UNION ALL을 하면 중복데이터도 같이 출력함
SELECT * FROM employees WHERE emp_no IN (10001,10003)
UNION ALL  
SELECT *FROM employees WHERE emp_no IN (10003);

SELF JOIN

  • 자기 자신을 조인
- 슈퍼바이저인 사원의 모든정보를 출력
SELECT DISTINCT
 emp1.*
FROM employees emp1
   JOIN employees emp2
      ON emp1.emp_no = emp2.sup_no
;

     
profile
개발 일기 ( •̀ ω •́ )✧

0개의 댓글

관련 채용 정보