패스트캠퍼스 데이터 분석 부트캠프

[SQL 기초 문법] 여러 테이블 한번에 다루기 (집합연산)

쓔! 2024. 4. 10. 16:19

09. 여러 테이블 한번에 다루기

 

1. 합집합으로 보이기
두 테이블의 결과 값을 모두 합쳐 보여줌 

 

1)  UNION 

- 동일한 값제외하고 보여줌

- 동일하다 = SELECT로 가져온 칼럼들의 모든 값이 같다

- 칼럼 값 하나라도 다르면 그냥 보여줌

 

2) UNION ALL

- 동일한 값포함하여 보여줌 

 

3) 작성방법

쿼리1 UNION / UNION ALL 쿼리2

 

조금 더 풀어서 설명하자면,

 

SELECT 컬럼명

FROM 테이블1

UNION / UNION ALL
SELECT 컬럼명

FROM 테이블2 ; 

 

- 쿼리1과 쿼리2의 데이터 개수가 같아야 함

- ORDER BY 는 쿼리 가장 마지막에 작성 가능, 쿼리 1에서 가져온 컬럼으로만 가능

 

2. 교집합으로 보이기

각 테이블에서 같은 값만 보이기 (모든 컬럼의 값이 같다는 소리)

INNER JOIN으로 표현가능 

 

SELECT 컬럼명

FROM 테이블1 AS 별명1

INNER JOIN 테이블명2 AS 별명2

ON 별명1.컬럼1 = 별명2.컬럼1 AND ... AND 별명1.컬럼n = 별명2.컬럼n

(교집합을 확인하고 싶은 컬럼은 모두 다 기준으로 두고 합쳐주어야 함)

 

3. 차집합으로 보이기

두개 중 한 테이블에 있는 값은 모두 제외하고 나머지 다른 테이블에만 속한 부분을 보이기

=> A, B라는 테이블이 있다면, A에서 A와 B모두에 속하는 값을 빼고 나머지를 보이기

LEFT JOINRIGHT JOIN으로 표현가능

 

SELECT 컬럼명

FROM 테이블1 AS 별명1

LEFT JOIN 테이블2 AS 별명2

ON 별명1.컬럼1 = 별명2.컬럼2 AND ... AND 별명1.컬럼n = 별명2.컬럼n

WHERE 별명2.컬럼 IS NULL ;

=> 테이블 2의 해당 컬럼이 비었을 떄만 출력해라 => 테이블1에만 있는 값을 출력해라 => 차집합

 

10. 조건에 조건 더하기

 

1. 서브쿼리

- 하나 쿼리 내 포함된 또 하나의 쿼리 의미

- 반드시 괄호 안에 존재

- 서브쿼리에는 세미콜론 ; X

 

 

2. SELECT 절의 서브쿼리

- 반드시 결과 값이 하나의 값이어야 함

 

SELECT 컬럼명 

     ( SELECT 컬럼명

       FROM 테이블명

       WHERE 조건식 )

FROM 테이블명

WHERE  조건식 ; 

 

3. FROM절의 서브쿼리

- 반드시 결과 값이 하나의 테이블

- 테이블 별명 붙어주어야 함

 

SELECT 컬럼명 

FROM ( SELECT 컬럼명

       FROM 테이블명

       WHERE 조건식 ) AS 테이블별명

WHERE  조건식 ;

 

 

4. WHERE절의 서브쿼리

- 반드시 결과 값이 하나의 컬럼 (EXISTS 제외)

- 연산자와 함꼐 활용

 

SELECT 컬럼명 

FROM 테이블명

WHERE  조건식 연산자 ( SELECT 컬럼명

                                        FROM 테이블명

                                        WHERE 조건식 )  ;