1. Join 이란
두 테이블의 공통된 키 값으로 연결해서 한테이블 처럼 볼 수 있도록 해준다.
(엑셀에서의 Vlookup과 동일)
2. Join 종류
- Left Join : A,B 테이블 중 왼쪽에 있는 테이블 키 값을 기준으로 테이블을 연결시켜준다.
(이때, 왼쪽에 있는 테이블의 키 값을 기준으로 연결시켜주므로 null값 즉, 비어있는 값이 생길 수 있다.)
- inner Join : A,B테이블 중 순서에 상관없이 키 값을 기준으로 교집합이 되는 값만을 연결시켜 보여준다.
select * from users u
inner join point_users p on u.user_id = p.user_id;
주의할점은 테이블을 연결해주어야하므로 어느 테이블의 user_id인지 구분하도록 별칭을 꼭 해줘야한다.
3. Join 예제
- orders 테이블에 users 테이블 연결
select * from orders o
inner join users u on o.user_id = u.user_id;
- checkins 테이블에 users 테이블 연결
select * from checkins c
inner join users u on c.user_id = u.user_id;
- enrolleds 테이블에 courses 테이블 연결
select * from enrolleds e
inner join courses c on e.course_id = c.course_id;
* SQL 쿼리 실행 순서
from → join → select
- from enrolleds: enrolleds 테이블 데이터 전체를 가져온다.
- inner join courses on e.course_id = c.course_id: courses를 enrolleds 테이블에 붙이는데, enrolleds 테이블의 course_id와 동일한 course_id를 갖는 courses의 테이블을 붙인다.
- select * : 붙여진 모든 데이터를 출력
항상 from에 들어간 테이블을 기준으로 다른 테이블을 붙인다.
- checkins 테이블에 courses 테이블 연결해서 통계치 (과목별 오늘의 다짐 개수)
select co.title, count(co.title) as checkin_count from checkins ci
inner join courses co on ci.course_id = co.course_id
group by co.title
- point_users 테이블에 users 테이블 연결해서 순서대로 정렬
select * from point_users p
inner join users u on p.user_id = u.user_id
order by p.point desc
- orders 테이블에 users 테이블 연결해서 통계치(네이버 이메일을 사용하는 유저의 성씨별 주문건수)
select u.name, count(u.name) as count_name from orders o
inner join users u on o.user_id = u.user_id
where u.email like '%naver.com'
group by u.name
* SQL 쿼리 실행 순서
from → join → where → group by → select
- from orders o: orders 테이블 데이터 전체를 가져오고 o라는 별칭을 붙인다.
- inner join users u on o.user_id = u.user_id : users 테이블을 orders 테이블에 붙이는데, orders 테이블의 user_id와 동일한 user_id를 갖는 users 테이블 데이터를 붙입니다. (*users 테이블에 u라는 별칭을 붙입니다)
- where u.email like '%naver.com': users 테이블 email 필드값이 naver.com으로 끝나는 값만 가져옵니다.
- group by u.name: users 테이블의 name값이 같은 값들을 뭉쳐줍니다.
- select u.name, count(u.name) as count_name : users 테이블의 name필드와 name 필드를 기준으로 뭉쳐진 갯수를 세어서 출력해줍니다.
강의에서 알려준 SQL 실행 순서에 대해 이해를 하고 있다면
내가 원하는 데이터도 이러한 순서대로 생각을 해서 쿼리를 짜면 될 것 같다.
'내마음대로만들어보자 > SQL' 카테고리의 다른 글
[SQL] Group by, Order by (0) | 2022.02.26 |
---|---|
[SQL] Select, Where 기본 문법 예제 (0) | 2022.02.22 |
[SQL] Select, Where절 기본문법 (0) | 2022.02.21 |
[SQL] Select 쿼리문의 개념 (0) | 2022.02.21 |