일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 전처리
- GTM
- engagement
- 데이터분석
- 데이터가공
- ABTest
- SQL
- 표본
- 리텐션
- 통계
- DAU
- 데이터
- 그로스마케터
- dataanalyst
- pvalue
- Python
- 데이터분석가
- 특정컬럼
- onehot
- row추가
- WAU
- dataanalysis
- INSERTINTO
- categorical
- warehouser
- sql로데이터
- 코테
- data
- 그룹
- 이전행
- Today
- Total
Meiren
[SQL 문법]JOIN() 총정리! 쉽게 한번에 끝내자. (INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN, SELF JOIN) 본문
[SQL 문법]JOIN() 총정리! 쉽게 한번에 끝내자. (INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN, SELF JOIN)
meiren 2023. 1. 15. 05:10목차
1. SUMMARY
2. INNER JOIN
3. OUTER JOIN
3-1. LEFT JOIN
3-2. RIGHT JOIN
3-3. FULL OUTER JOIN
3-4. upgrade OUTER JOIN
4. SELF JOIN
5. CROSS JOIN
1. SUMMARY
join? 두 개의 테이블을 서로 붂어 하나의 결과를 만들어 내는 것
- INNER JOIN (내부조인) : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 함
- OUTER JOIN (외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나옴
- SELF JOIN (자체 조인) : 자신이 자신과 조인함, 1개의 테이블 사용
- CROSS JOIN (상호 조인) : 한쪽 테이블의 모든 행과 다른 쪽의 모든 행을 조인
* join 조건이 여러개인 경우, on절에 AND로 추가해주면 됨
ON( a.aa = b.aa AND b.cc IN (10, 20, 30))
2. INNER JOIN
기준 테이블과 조인 테이블 모두 데이터가 존재해야 조회됨
가장 일반적인 조인, 보통 조인이라 하면 '내부 조인'을 말함
- 코드에서 inner join > join 만 써도 됨
SELECT <열 목록>
FROM <첫 번쨰 테이블>
INENR JOIN <두 번째 테이블>
ON <조인될 조건>
[WHERE 검색 조건]
예제, 2개의 테이블 조인
SELECT O.orderID, c.customerName
FROM Orders as o
INNER JOIN Customers as c
on o.customerID = c.customerID
3. OUTER JOIN
기준 테이블에만 데이터가 존재하면 조회됨 (데이터가 없는 경우 null 표시됨)
3-1. LEFT JOIN
오른쪽 테이블에 일치하는 항목이 없더라도, 왼쪽 테이블의 모든 레코드 반환
반대로 오른쪽 테이블 데이터 중, 왼쪽 테이블에 없는 경우는 삭제/미포함됨
left (outer) join syntac
SELECT coulumn_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name
예제, 고객 테이블과 주문 테이블을 활용해 모든 고객과 그들이 가질 수 있는 모든 주문번호
SELECT c.customerName, o.orderID
FROM Customes as c
LEFT JOIN Orders as o
ON c.customerID = o.customerID
ORDER BY c.customerName
3-2. RIGHT JOIN
RIGHT OUTER JOIN syntax
SELECT coulumn_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name
예제, 모든 직원과 직원이 발주한 모든 주문
- from o right join e
- table2(right) == e
SELECT o.orderID, e.lastName, e.fitstName
FROM Orders as o
RIGHT JOIN Employees as e ON o.employeeID = e.employeeID
ORDER BY o.orderID
3-3. FULL OUTER JOIN
FULL JOIN == FULL OUTER JOIN
SELECT coulumn_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition
예제, 모든 고객과 모든 주문
SELECT c.customerName, o.orderID
FROM Customers as c
FULL OUER JOINOrders as o ON c.customerID = o.customerID
ORDER BY c.customerName
3-4. upgrade OUTER JOIN
[LEFT] A - B == A ∩ B의 여집합
SELECT *
FROM A a
LEFT JOIN B b
ON a.KEY = b.KEY
WHERE b.KEY IS NULL
[RIGHT] B - A == B ∩ A의 여집합
SELECT *
FROM B b
RIGHT JOIN A a
ON a.KEY = b.KEY
WHERE a.KEY IS NULL
[OUTER] (A ∪ B) - (A ∩ B)
SELECT *
FROM A a
FULL OUTER JOIN B b
ON a.KEY = b.KEY
WHERE a.KEY IS NULL
OR b.KEY IS NULL
4. SELF JOIN
의미
- 하나의 테이블과 동일한 테이블을 조인함. 자기자신과 조인함
syntax
- T1, T2는 하나의 동일한 테이블에 대한 2개의 이름(별칭)
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition
같은 도시에 있는 고객 (근데 언제 왜 필요한건지 잘 모르겠음)
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City
5. CROSS JOIN
기준 테이블의 행을 조인 테이블 행만큼 증가시킨다.
즉, 두 테이블의 행 개수를 곱한 개수??
두 테이블간 일치 여부와 무관하게 행이 나열됨
모든 행에 대한 결합이 발생하여 ON 구문을 쓸 수 없다.
현재 CUBE / GROUPPING으로 대체되어 잘 스이지 않음
syntax
SELECT column_name(s)
FROM table1
CROSS JOIN table2
where절을 통해, cross join을 inner join과 동일하게 바꿀 수 있다
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
CROSS JOIN Orders
WHERE Customers.CustomerID=Orders.CustomerID;
https://www.w3schools.com/sql/sql_join_self.asp
SQL Self Join
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
[MSSQL] 조인 방법 쉽게 정리 (INNER JOIN, OUTER JOIN)
SQL Server에서는 조인을 할 때에는 안시 조인(ANSI JOIN) 사용을 권장한다. 아래에는 조인(INNER JOIN), 아우터 조인(LEFT OUTER JOIN, RIGHT OUTER JOIN), 크로스 조인(CORSS JOIN) 사용법을 정리하였다. INNER JOIN과 LEFT
gent.tistory.com
SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN)
조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.OUTER JOIN(외부
hongong.hanbit.co.kr
https://pyoungt.tistory.com/23
MSSQL JOIN 정리 : INNER JOIN, OUTER JOIN, CROSS JOIN
일반적으로 관계형 데이터베이스란 키(Key)와 값(Value)들의 관계를 테이블화 시킨 간단한 원칙의 데이터베이스를 말한다. 이때 A 테이블과 B 테이블에 있는 정보들을 함께 출력하고 싶다면 어떻게
pyoungt.tistory.com
'SQL' 카테고리의 다른 글
[SQL 문법] INSERT INTO 데이터 삽입 (0) | 2023.01.15 |
---|---|
[SQL 문법] LAG()과 LEAD()의 차이 및 활용 방법(예제 코드) (0) | 2023.01.15 |
[SQL 문법] PARTITION BY(파티션 분할)과 ROW_NUMBER() OVER() 정리 (1) | 2023.01.15 |
[SQL 문법]WITH 문법 및 가상테이블 만들기/mysql (0) | 2023.01.14 |
[5일 벼락치기] 1day, SQL Level 1~ 3.zip (0) | 2023.01.03 |