[데분스] Day+4. SQL - UNION, JOIN

용솝·2024년 2월 7일
1

SQL

목록 보기
3/8
post-thumbnail

07. UNION

  • UNION : 여러 개의 SQL문을 하나의 SQL문으로 만드는 방법
    (주의! 컬럼 개수가 같아야 함!)

  • UNION : 중복된 값 제거

  • UNION ALL : 중복된 값 포함

[test1 테이블]
[test2 테이블]

select * from test1
UNION -- 중복을 제거하여 합침
select * from test2;

[UNION : 중복값 제거]

select * from test1
UNION ALL -- 중복을 포함하여 합침
select * from test2;

[UNION ALL : 중복값 포함]


ex) 성이 '이'씨인 데이터를 검색하는 쿼리와 1970년대생을 검색하는 쿼리를 중복을 포함하여 합쳐서 실행

select * from celeb where name like '이%'
UNION ALL -- 중복을 포함하여 합침
select * from celeb where birthday between 19700101 and 19791231;

08. JOIN

  • JOIN : 두 개 이상의 테이블을 결합하는 것

  • INNER JOIN : 두 개 테이블에서 공통 요소 결합

select c.id, c.name, s.id, s.host
	from celeb c
	INNER JOIN snl_show s -- INNER JOIN
	ON c.name = s.host; -- ON: join 조건
  • LEFT JOIN : 두 개 테이블에서 공통 영역과 왼쪽 테이블 결합
select c.id, c.name, s.id, s.host
	from celeb c
    LEFT JOIN snl_show s -- LEFT JOIN
    ON c.name = s.host -- ON: join 조건
  • RIGHT JOIN : 두 개 테이블에서 공통 영역과 오른쪽 테이블 결합
select c.id, c.name, s.id, s.host
	from celeb c
    RIGHT JOIN snl_show s -- RIGHT JOIN
    ON c.name = s.host -- ON: join 조건
  • FULL OUTER JOIN : 두 개 테이블에서 공통 영역과 양쪽 테이블 모두 결합
select c.id, c.name, s.id, s.host
	from celeb c
    FULL JOIN snl_show s -- FULL JOIN
    ON c.name = s.host -- ON: join 조건
 --[ ERROR ] !!!MySQL 은 FULL JOIN 지원 X!!!
 
 -- 대신 "LEFT JOIN - UNION - RIGHT JOIN"
select c.ID, c.name, s.id, s.host
	from celeb c 
    LEFT JOIN snl_show s 
	on c.name = s.host	
    UNION
select c.ID, c.name, s.id, s.host
	from celeb c
    RIGHT JOIN snl_show s
	on c.name = s.host;

  • SELF JOIN : FROM절(합칠 테이블 명시), WHERE절(조건)
select c.name, c.job_title
	FROM celeb c, snl_show s
    WHERE c.name = s.host -- snl에 호스트로 출연하고
    and c.agency = '안테나'; -- 안테나 소속사인 사람

profile
🖐

0개의 댓글