1. INNER JOIN : 두 테이블 모두에만 존재하는 값을 리턴
2. LEFT JOIN : 좌측 테이블의 모든 값과 우측 테이블과 일치하는 값을 리턴
3. RIGHT JOIN : 우측 테이블의 모든 값과 좌측 테이블과 일치하는 값을 리턴
4. CROSSJOIN : 두 테이블의 값을 모두 리턴
- Example :
(1) INNER JOIN
SELECT column_name(s) FROM Table1
INNER JOIN table2
ON Table1.column_name = table2.column_name;
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
3단계 join도 가능하다. INNER JOIN문 2개로 작성
(2) LEFT JOIN
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerName = Orders.CustomerID;
→ Right Table(Orders)와 match가 없어도 Left Table(Customers)의 모든 기록을 보여줌.
(3) RIGHT JOIN
SELECT Orders.OrderID, Orders.OrderDate, Employees.FirstName
FROM Orders # table1
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID # table2
ORDER BY Orders.OrderID;
→ 여기선 주가 되는게 table2, RIGHT JOIN 뒤에 나오는 table!
→ Left Table(Orders)에 match 되는 값이 없어도 Right Table(Employee)의 모든 값을 리턴함.
(4) CROSS JOIN
SELECT Orders.OrderID, Orders.OrderDate, Employees.FirstName
FROM Orders # table1
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID # table2
ORDER BY Orders.OrderID;
만약 Customers와 Orders 기준 열 값이 일치하지 않는 관측치가 있어도 모두 리턴될 것.
(5) SELF JOIN : 자기자신과 join
SELECT A.CustomerName AS CustomerName1, B.CustomerName As CustomerName2, A.City
FROM Customers AS A, Customers AS B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City;
→ 같은 도시에서 온 고객들을 매칭시키는 코드 (동일인이 아닌 조건문 포함됨)
'SQL' 카테고리의 다른 글
MySQL 날짜 관련 함수 - date_format, period_add, period_diff ... (0) | 2021.09.05 |
---|---|
Programmers SQL 중성화 여부 파악하기 (0) | 2021.09.05 |
Programmers SQL 입양 시각 구하기(2) (0) | 2021.09.05 |
MySQL 문법 - Union, Group by, Having, ... (0) | 2021.08.23 |
MySQL 기본 문법정리 (0) | 2021.08.23 |