생각나는 MySQL 명령어 파보기 - 2

2023. 5. 31. 18:39·Database & Data/MySQL
728x90
SMALL

INNER JOIN

테이블의 교집합

두 테이블 간에 공통된 값을 가진 행만 반환

SELECT Orders.order_id, Customers.customer_name
FROM Orders
INNER JOIN Customers ON Orders.customer_id = Customers.customer_id;

 

OUTER JOIN

한 테이블의 행이 다른 테이블의 행과 일치하면 그 행을 반환 단, 어떤 행과도 일치하지 않으면 해당 행을 NULL과 함께 반환한다.

"LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN"이 있다.

 

1) LEFT JOIN(=LEFT OUTER JOIN)

 첫 번째 테이블의 모든 행과 두 번째 테이블에서 일치하는 행을 반환하며, 일치하는 행이 없는 경우에는 NULL 값을 반환

SELECT Orders.order_id, Customers.customer_name
FROM Orders
LEFT JOIN Customers ON Orders.customer_id = Customers.customer_id;

 

2) RIGTH JOIN(=RIGHT OUTER JOIN)

두 번째 테이블의 모든 행과 첫 번째 테이블에서 일치하는 행을 반환하며, 일치하는 행이 없는 경우에는 NULL 값을 반환

SELECT Orders.order_id, Customers.customer_name
FROM Orders
RIGHT JOIN Customers ON Orders.customer_id = Customers.customer_id;

 

3) FULL JOIN(=FULL OUTER JOIN)

두 테이블의 모든 행을 반환하며, 일치하는 행이 없는 경우에는 해당 위치에 NULL 값을 반환

하지만 MySQL에서는 FULL JOIN을 직접 지원하지 않아 LEFT/RIGHT JOIN과 UNION을 이용한다.

SELECT Orders.order_id, Customers.customer_name
FROM Orders
LEFT JOIN Customers ON Orders.customer_id = Customers.customer_id
UNION
SELECT Orders.order_id, Customers.customer_name
FROM Orders
RIGHT JOIN Customers ON Orders.customer_id = Customers.customer_id;

 

SELF JOIN

두 개 이상의 테이블에서 관련된 데이터를 찾아내는 방법

 

ex) employees 테이블

employee_id employee_name manager_id
1 John null
2 Mike 1
3 Sally 1
4 Jane 2
5 Bob 2

각 직원과 그들의 매니저의 이름을 함께 출력하고 싶다면?

이때 SELF JOIN을 이용한다.

 

SELECT e1.employee_name AS employee, e2.employee_name AS manager
FROM employees e1
INNER JOIN employees e2 ON e1.manager_id = e2.employee_id;

이때 반드시 테이블 별로 별칭을 지정해줘야 한다.

 

ex) 쿼리 결과

employee manager
Mike John
Sally John
Jane Mike
Bob Mike

 

728x90
SMALL
저작자표시 비영리 변경금지 (새창열림)

'Database & Data > MySQL' 카테고리의 다른 글

생각나는 MySQL 명령어 파보기 - 3  (0) 2023.06.02
MySQL 프로시저(Procedure) 단계별로 작성해보기  (0) 2023.06.01
생각나는 MySQL 명령어 파보기 - 1  (0) 2023.05.31
MySQL Forward Engineer 기능  (0) 2023.05.26
RDS(MySQL) - 서버 시간을 한국 시간으로 변경하기(권한 에러 추가)  (0) 2023.05.07
'Database & Data/MySQL' 카테고리의 다른 글
  • 생각나는 MySQL 명령어 파보기 - 3
  • MySQL 프로시저(Procedure) 단계별로 작성해보기
  • 생각나는 MySQL 명령어 파보기 - 1
  • MySQL Forward Engineer 기능
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
생각나는 MySQL 명령어 파보기 - 2
상단으로

티스토리툴바