DAY9 여러 테이블 한번에 다루기

Mark·2022년 5월 19일
0
post-thumbnail

👩🏻‍💻 패스트캠퍼스 국비지원과정 'SQL로 시작하는
데이터 분석 첫걸음' 강의 내용 정리를 목적으로 개인 공부차 작성한 글입니다.
✏️ 수강 중인 교육과정 : https://fastcampus.co.kr/b2g_kdc_sql
 

1. 집합 연산

  • 합집합
  • 교집합
  • 차집합
     

2. 데이터에 데이터 더하기

UNION, UNION ALL

  • [쿼리 A] UNION [쿼리 B] or [쿼리 A] UNION ALL [쿼리 B]
  • [쿼리 A] 와 [쿼리 B]의 결과 값을 합쳐서 보여줌
  • UNION은 중복 제거하고 보여줌
    • 단, 컬럼의 값이 다른 경우에는 같이 나타날 수 있음
  • UNION ALL 중복을 제거하지 않고 보여줌
  • [쿼리 A] 와 [쿼리 B]의 결과 값의 개수가 같아야 한다. (다를 경우 에러 발생)
  • ORDER BY는 쿼리 가장 마지막에 작성 가능, [쿼리 A]에서 가져온 컬럼으로만 가능

쿼리 문법

SELECT [컬럼 이름]
FROM [테이블 A 이름]
UNION
SELECT [컬럼 이름]
FROM [테이블 B 이름]
SELECT [컬럼 이름]
FROM [테이블 A 이름]
UNION ALL
SELECT [컬럼 이름]
FROM [테이블 B 이름]

  

3. 데이터에서 데이터 빼기

INTERSECT(교집합)

  • MySQL에서는 존재하지 않음 → JOIN 이용한 표현
  • 교집합을 확인하고 싶은 컬럼은 모두 기준으로 두고 합쳐야 함 → ON을 둬야 함
  • 같은 이름을 가지는 컬럼이 있을 경우 SELECT할 때 어떤 테이블에서 가져올 것인지 명시 필요
SELECT [컬럼 이름]
FROM [테이블 A 이름] AS A
INNER JOIN [테이블 B 이름] AS B
ON A.[컬럼1이름]=B.[컬럼1이름] AND...AND A.[컬럼n이름]=B.[컬럼n이름];

MINUS(차집합)

  • MySQL에서는 존재하지 않음 → JOIN 이용한 표현
  • 확인하고 싶은 컬럼은 모두 다 기준으로 둬야 함
SELECT [컬럼 이름]
FROM [테이블 A 이름] AS A
LEFT JOIN [테이블 B 이름] AS B
ON A.[컬럼1이름]=B.[컬럼1이름] AND...AND A.[컬럼n이름]=B.[컬럼n이름]
WHERE B.[컬럼1이름] IS NULL; -- a에서 b를 빼준다. 즉, a에는 있지만 b에는 없는 데이터
profile
개인 공부 정리

0개의 댓글