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)
출처
반응형
'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 |