INNER JOIN
- 교집합과 비슷한 개념
- 양쪽 테이블에 있는 모두 다 있는 데이터만 출력
- Join키로 사용되는 컬럼들 간에 이름이 다를 수 있음 > ERD 활용
-- 만들 수 있는 경우의 수를 다 만들어주는 Inner Join
-- Old Ver.
SELECT *
FROM Users, Orders
WHERE Users.Id = Orders.userId
-- New Ver.
SSELECT *
FROM Users
INNER JOIN Orders
On Users.Id = Orders.userId
예시
-- join을 여러번 할 수 있음
SELECT *
FROM Orders
INNER JOIN Customers ON Orders.CustomerId = Customers.CustomerId
INNER JOIN Shippers On Orders.ShipperId = Shippers.ShipperId
OUTER JOIN
- LEFT JOIN (LEFT OUTER JOIN) > 왼쪽 테이블에 데이터가 있고 오른쪽 테이블에 데이터가 없을 때 하는 join 방법
- RIGHT JOIN (RIGHT OUTER JOIN) > 오른쪽 테이블에 데이터가 있고 왼쪽 테이블에 데이터가 없을 때 하는 join 방법
-- LEFT OUTER JOIN 예시
SELECT *
FROM Users
LEFT JOIN Orders ON Users.Id = Orders.userId
FULL OUTER JOIN (LEFT OUTER JOIN & RIGHT OUTER JOIN)
- FULL OUTER JOIN 개념을 MySQL에서 사용하고 싶을 때 UNION을 사용해서 묶을 수 있음
SELECT *
FROM Customers
LEFT JOIN Orders On Customers.CustomerID = Orders.CustomerID
UNION
SELECT *
FROM Customers
RIGHT JOIN Orders On Customers.CustomerID = Orders.CustomerID
관련 문제
- [Algorithm/MySQL] - [해커랭크(HackerRank)] African Cities (MySQL)
- [Algorithm/MySQL] - [해커랭크(HackerRank)] Population Census (MySQL)
- [Algorithm/MySQL] - [해커랭크(HackerRank)] Average Population of Each Continent (MySQL)
- [Algorithm/MySQL] - [LeetCode] 183. Customers Who Never Order (MySQL)
- [Algorithm/MySQL] - [LeetCode] 181. Employees Earning More Than Their Managers (MySQL)
- [Algorithm/MySQL] - [LeetCode] 197. Rising Temperature (MySQL)
출처
[백문이불여일타] 데이터 분석을 위한 중급 SQL - 인프런 | 강의
SQL 중급 이론을 배우고, 실습 문제를 함께 풀어봅니다., 강의소개 SQL 이론 강의는 많은데 문제 풀이와 병행하면서 진짜 실력을 키울 수 있는 강의는 왜 없을까요? 영어 문법 공부를 아무리해도
www.inflearn.com
반응형
'Database > MySQL' 카테고리의 다른 글
[MySQL] DML (Data Manipulation Language) (0) | 2021.07.08 |
---|---|
[MySQL] UNION, UNION ALL (0) | 2021.07.05 |
[MySQL] 시간 더하기, 빼기 (DATE_ADD(), DATE_SUB()) (0) | 2021.07.05 |
[MySQL] DATE_FORMAT() (0) | 2021.07.02 |
[MySQL] NOW() 함수 (0) | 2021.03.30 |