(MySQL) UNION/JOIN

지며리·2023년 1월 3일
0
post-thumbnail

UNION_수직결합

select column1, column2 ... from table1
union | union all
select column1, column2 ... from table2
  • 여러 개의 SQL 문을 합쳐서 하나의 SQL 문으로 만들어주는 방법
  • 컬럼의 갯수가 같아야 한다
  • union: 중복된 값을 제거하여 알려준다.
  • union all: 중복된 값도 포함하여 모두 보여준다.

select name, sex, agency from celeb where sex = 'F'
UNION ALL
select name, sex, agency from celeb where agency = 'YG엔터테이먼트'

celeb테이블에서 성별이 여자인 행의 이름, 성별, 소속사를 조회한 데이터와 celeb 테이블에서 소속사가 YG엔터테이먼트인 행의 이름, 성별, 소속사를 조회한 데이터를 중복을 제거하지 않고 합쳐서 조회


select name, birthday, age from celeb
where job_title LIKE '%가수%'
UNION
select name, birthday, age from celeb
where birthday between '1980-01-01' and '1989-12-31';

가수가 직업인 연예인의 이름, 생년월일, 나이를 검색하는 쿼리와 1980년대에 태어난 연예인의 이름, 생년월일, 나이를 검색하는 쿼리를 UNION으로 실행


JOIN_수평결합

select column_, column__,...
from tableA
INNER JOIN|LEFT JOIN|RIGHT JOIN
tableB
on tableA.column1 = tableB.column2
where conditions;
  • INNER JOIN
    두 개의 테이블에서 공통된 요소들을 통해 결합하는 조인방식(교집합)
    where 절을 만족하면서 tableA의 column1과 tableB의 column2가 같은 경우의 데이터 중 column_, column__,...를 조회

  • LEFT JOIN
    두 개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 방식
    오른쪽 테이블이 가지고 있지 않은 값에 대하여는 null값이 조회

  • RIGHT JOIN
    두 개의 테이블에서 공통영역을 포함해 오른쪽 테이블의 다른 데이터를 포함하는 방식
    왼쪽 테이블이 가지고 있지 않은 값에 대하여는 null값이 조회


select column1, column2,...
from tableA
LEFT JOIN tableB 
On tableA.column = tableB.column
UNION
select column1, column2,...
from tableA
RIGHT JOIN tableB 
On tableA.column = tableB.column
  • FULL OUTER JOIN
    두 개의 테이블에서 공통 영역을 포함하여 양쪽 테이블의 다른 영역을 모두 포함하는 조인방식(합집합)

select column1, column2, ...
from tableA, tableB
where tableA.column = tableB.column;
  • SELF JOIN
    JOIN문을 사용하지 않고 where을 활용하여 JOIN 기능을 구현 가능
profile
쉽고 유익하게 널리널리

0개의 댓글