1. JOIN
select order_id, product_id, name
from `weniv.weniv_order`
join `weniv.weniv_product`
on `weniv.weniv_order`.product_id = `weniv.weniv_product`.id
select order_id, product_id, name
from `weniv.weniv_order` as o
join `weniv.weniv_product` as p
on o.product_id = p.id
2. INNER JOIN
두 테이블 모두에서 일치하는 값이 있는 행 반환
select table1.id, table2.id
from table1
[inner] join table2
on table2.id=table1.id
select
o.order_id,
o.product_id,
p.name,
o.created_at
from `weniv.weniv_order` as o
join `weniv.weniv_product` as p
on o.product_id = p.id
3. LEFT JOIN
- 왼쪽 조인은 오른쪽 테이블의 해당 행과 함께 왼쪽 테이블의 모든 행을 반환
- 일치하는 행이 없으면 NULL이 두 번째 테이블의 값으로 반환
select table1.id, table2.id
from table1
left [outer] join table2
on table2.id = table1.id
select
t1.order_id,
t1.created_at,
t2.name,
t2.city,
t1.product_id,
t3.name as product_name
from `weniv.weniv_order` t1
left join `weniv.weniv_user` t2 on t1.user_id = t2.id
left join `weniv.weniv_product` t3 on t1.product_id = t3.id
where t2.city = 'Jeju'
4. RIGHT JOIN
select table1.id,table2.id
from table1
right [outer] join table2
on table2.id=table1.id
select
orders.order_id,
orders.created_at,
users.name as user_name
from `weniv.weniv_order` as orders
right join `weniv.weniv_user` as users
on orders.user_id = users.id
order by user_name
5. FULL JOIN
전체 조인은 두 번째 테이블에 일치하는 행이 없으면 두 테이블의 모든 행을 반환하고 NULL이 반환
select table1.id,table2.id
from table1
full [outer] join table2
on table2.id=table1.id
select
orders.order_id,
orders.created_at,
users.name
from `weniv.weniv_order` as orders
full join `weniv.weniv_user` as users
on orders.user_id = users.id
order by order_id
-> 잘 사용하지 않음
6. CROSS JOIN
- 교차 조인은 두 테이블에서 가능한 모든 행 조합을 반환
select table1.id, table2.id
from table1
cross join table2
select table1.id,table2.id
from table1, table2
동일
select
users.name as user_name,
products.name as product_name
from `weniv.weniv_product` as products
cross join `weniv.weniv_user` as users
order by user_name, product_name
+)
트랜잭션 데이터(transaction data)
트랜잭션 데이터는 다양한 애플리케이션에서 일상적인 비즈니스 프로세스를 실행하거나 지원할 때 생성되는 데이터
- 주문 데이터
마스터 데이터(master data)
마스터 데이터는 트랜잭션에서 참고되는 각종 정보
- 회원데이터
- 상품데이터
분석 데이터
분석데이터는 트랜젝션 데이터에 대한 계산 또는 분석을 통해 생성되는 데이터
- 통계 데이터
트랜잭션 데이터 + 마스터 데이터 결합시켜서 데이터 마트
주문 + 유저 + 상품
SELECT T1.order_id,
T1. user_id,
T2.name AS USER_NAME,
T2.age AS USER_AGE,
T2.city AS USER_CITY,
T2.postal_code AS USER_POSTAL_CODE,
T1.created_at AS ORDER_CREATED_AT,
T1. num_of_item,
T1.product_id,
T3.name AS PRODUCT_NAME,
T3.COST AS PRODUCT_COST
FROM `weniv.weniv_order` AS T1
LEFT JOIN `weniv.weniv_user`AS T2 ON T1.user_id = T2.id
LEFT JOIN `weniv.weniv_product` AS T3 ON T1.product_id = T3.id
'AI SCHOOL > SQL' 카테고리의 다른 글
[SQL] JOIN 연습문제 (0) | 2023.01.26 |
---|---|
[SQL] 조건분기(CASE, IF) (0) | 2023.01.26 |
[SQL] 조건분기(CASE, IF) 연습문제 (1) | 2023.01.26 |
[SQL] 날짜 함수 (1) | 2023.01.25 |
[SQL] 숫자, 문자열 함수, 날짜 함수 연습문제(프로그래머스) (0) | 2023.01.25 |