- 여러 개의 SQL문을 합쳐서 하나의 SQL문으로 만들어주는 방법
(!! 주의 !! 칼럼의 개수가 같아야함 - 칼럼의 종류는 상관없음)
: 중복된 값을 제거하여 알려준다
: 중복된 값도 모두 보여준다
[기본 문법]
( 예제1 : union all ) 성별이 여자인 데이터를 검색하는 쿼리와 소속사가 YG엔터테인먼트인 데이터를 검색하는 쿼리를 union all로 실행
( 예제2 : union ) 성별이 여자인 데이터를 검색하는 쿼리와 소속사가 YG엔터테인먼트인 데이터를 검색하는 쿼리를 union으로 실행
( 예제3 ) 가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리와 1980년대에 태어난 연예인의 이름, 생년월일, 나이를 검색하는 쿼리를 UNION으로 실행 또는 ... where birthday like '198_%' ;
- 두 개 이상의 테이블을 결합하는 것
[문법]
[문법]
[예제] snl_show에 호스트로 출연한 celeb을 기준으로 celeb 테이블과 snl_show 테이블을 left join
[문법]
[예제] snl_show에 호스트로 출연한 celeb을 기준으로 celeb 테이블과 snl_show 테이블을 right join
[문법]
MySQL에서는 지원하지 않는 full outer join의 기능을 대체할 문법
- union을 이용하여 병합시 중복값 제거
= ( Left join ) union ( Right join )
[예제 실행 결과]
- 문법은 다르지만 기능상 inner join과 같은 결과값을 가져옴
[문법]
[예제 1] snl_show에 호스트로 출연한 celeb을 기준으로 celeb 테이블과 snl_show 테이블을 self join
- [예제 1] self join의 기준점(조건문)
---> celeb 테이블의 name 값 = snl_show 테이블의 host 값
[예제 2] celeb 테이블의 연예인 중, snl_show에 host로 출연했고 소속사가 안테나인 사람의 이름과 직업을 검색
[예제 3] 다음 조건을 모두 충족하는 결과를 제시하기
1) celeb 테이블의 연예인 중에서,
2) snl_show에 host로 출연했고,
3) 영화배우는 아니면서 YG엔터테인먼트 소속이거나
4) 40세 이상이면서 YG엔터테인먼트 소속이 아닌 연예인의 이름, 나이, 직업, 소속사, 시즌, 에피소드 정보를 탐색
[예제 4] snl_show에 출연한 연예인의 snl_show 아이디, 시즌, 에피소드, 이름, 직업 정보를 검색
[예제 5] 다음 조건을 모두 충족하는 결과를 제시하기
1) snl_show에 출연한 celeb 중에서
2) 에피소드 7, 9, 10 중에 출연했거나
3) 소속사가 YG로 시작하고 뒤에 6글자로 끝나는 사람 중에서
4)작년 9월 15일 이후에 출였했던 사람을 검색
[주의] ( ) 위치 신경쓰기!
[문제 2] snl_show에 출연한 celeb 중, 2020년 9월 15일 이후에 출연했거나 소속사 이름이 '엔터테이먼트'로 끝나지 않으면서 영화배우나 개그맨이 아닌 연예인의 celeb 아이디, 이름, 직업, 소속사 검색