두 개이상의 테이블을 결합하여 데이터를 검색하는 방법
표준 SQL과는 달리 MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 모두 같은 의미로 사용
select * from users u
(inner) join point_users p
on u.user_id = p.user_id;
-- 동일한 동작을 함
select * from users u, point_users p
where u.user_id = p.user_id;
select * from users u
left join point_users p
on u.user_id = p.user_id;
-- 네이버 이메일 사용하는 유저의 성씨별 주문건수 세어보기
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
join은 항상 from 다음에 실행
두 개 이상의 SQL 쿼리문을 결합하는 데 사용
SELECT절
[집합 연산자]
SELECT절
UNION
: 결과를 합칠때 중복되는 행은 하나만 표시(합집합)UNION ALL
: 중복제거를 하지 않고 모두 합침(합집합, 중복허용)INTERSECT
: 결과를 합칠때 중복되는 행만 표시(교집합)EXCEPT(MINUS)
: 첫번째 SQL문의 결과에서 두번째 SQL문의 결과를 뺌(차집합)MySQL에는 교집합과 차집합을 다루는 INTERSECT, MINUS 연산자가 없으므로 다음과 같이 표현한다.
- 교집합: IN 연산자 이용
- 차집합: NOT IN 연산자 이용