본문 바로가기

SQL

(왕왕왕초보의) 엑셀보다 쉬운 SQL - 3주차 <1>

반응형

3-1) Join

 

Join : 다른 테이블의 같은 요소 (key)를 매칭하여 여러 정보를 한 눈에 볼 수 있다.

- left join : 어떤 데이터는 비어있는 필드가 있을 수 있다.

- inner join : 데이터가 비어있는 필드가 없다.

select * from users u

select * from point_users

# left join : 포인트 없는 애 다 포함 (NULL 표시)
select * from users u
left join point_users pu 
on u.user_id = pu.user_id # 498개 # users 테이블에 point_users 테이블을 갖다 붙임

# user_id가 어떤 테이블의 user_id인지 알려주어야함 (ambiguous)

 

select * from point_users pu 
left join users u
on u.user_id = pu.user_id # 271개 (NULL이 안나옴)

 

- NULL 확인법

select * from point_users
where user_id = '3b3eac9f'

 

# inner join : 포인트 있는 애만 표시
select * from users u
inner join point_users pu 
on u.user_id = pu.user_id # 271개

 

select * from point_users pu
inner join users u 
on u.user_id = pu.user_id # 271개

 

※ 테이블을 나눠 놓는 이유 : 같은 목적에 따라 나누는 것이 웹서비스 동작에 있어 매우 편하다 

 

# 실습 1 : orders 테이블에 users 테이블 연결해보기 
select * from users u

select * from orders o

select * from orders o
inner join users u
on o.user_id = u.user_id

# 실습 2 : checkins 테이블에 users 테이블 연결해보기
select * from checkins ci

select * from users u

select * from checkins ci
inner join users u
on ci.user_id = u.user_id

# 실습 3 : enrolleds 테이블에 courses 테이블 연결해보기
select * from enrolleds ed

select * from courses c

select * from enrolleds ed
inner join courses c 
on ed.course_id = c.course_id
# enrolleds 를 읽고  courses를 읽는데 join을 하면 무엇으로 붙는지 (on이하로) 그 이후 select

select * from courses c # 먼저
inner join enrolleds ed # 뒤에
on ed.course_id = c.course_id

반응형