본문 바로가기
CS/Database

[SQL] JOIN / SET OPERATOR / SUBQUERY

by 별토끼. 2017. 6. 12.
반응형


[SQL] JOIN / SET OPERATOR / SUBQUERY


  •  JOIN의 개념
- 서로 연관되고 다른 테이블에 존재하는 컬럼들을 한 번에 조회하기 위해 사용하는 대표적인 기법

  •  equals JOIN : 외래키와 기본키를 연관시켜 JOIN한다.

* ORACLE 전용 구문
    SELECT EMP_NAME, DEPT_NAME
    FROM EMPLOYEE E,
       DEPARTMENT D
          WHERE E.DEPT_ID = D.DEPT_ID;



* ANSI 표준 구문 ( USING/ ON )

 - USING은 별칭을 쓸 수 없다.

 - 좀 더 유연하게 만들기 위해서는 ON을 이용한다.


  •  LEFT/RIGHT JOIN

- EMPLOYEE 테이블은 22개 결과 값을 갖고 있다.

- DEPT_ID값이 NULL값인 튜플이 있다.

- 그냥 JOIN을 할 경우 DEPT_ID가 NULL인 튜플은 누락됨을 알 수 있다.


- 누락을 방지하기 위해서 LEFT/RIGHT JOIN을 할 수 있다.

* LEFT JOIN 

 - EMPLOYEE테이블이 기준이 되어 EMPLOYEE 테이블의 튜플은 모두 출력한다.

*RIGHT JOIN

 - DEPARTMENT테이블이 기준이 되어 DEPARTMENT 테이블의 튜플은 모두 출력한다.

* FULL JOIN

- 모든 테이블의 NULL값의 튜플을 포함한다.

  • SELF JOIN
- 테이블 하나 안에서 별칭을 주고 원하는 도메인끼리 JOIN을 한다.

- OUTER JOIN(RIGTH/LEFT)을 이용해 NULL값인 튜플도 포함하여 출력할 수 있다.


  • N개의 테이블 JOIN하기


  • JOIN된 결과 필터링 하기


  • SET OPERATOR (UNION/UNION ALL/INTERSECT/MINUS)
- 두개의 쿼리를 실행해서 결과를 MERGE

- 쿼리1과 쿼리2의 SELECT 목록은 반드시 컬럼의 갯수, 데이터 타입이 동일해야하므로 이를 위해 DUMMY COLUMN을 이용하거나 형변환함수를 이용한다.

- UNION : 중복제거 합집합

- UNION ALL : 중복포함 합집합

- INTERSECT : 교집합

- MINUS : 차집합


  • SubQuery

SELECT가 SELECT를 포함한다.

- 다른 쿼리에 포함된 내부 쿼리(서브 쿼리)는 외부 쿼리(메인 쿼리)에 사용될 값을 반환하는 역할

- 유형 : 단일행 서브쿼리 / 다중행 서브쿼리


* 단일행

 


* 다중행

 - 다중행 연산자 IN, ANY, ALL 을 이용한다.

 - IN : 검색된 값 중 하나만 일치하면 참


 - ANY : 검색된 값 중에 조건에 맞는 것이 하나 이상 있으면 참

컬럼 > ANY : 가장 작은 값보다 크다. 컬럼 > MIN

컬럼 < ANY : 가장 큰 값보다 작다. 컬럼 < MAX


 - ALL : 모든 검색된 값과 조건에 맞아야한다.

컬럼 > ALL : 가장 큰 값보다 크다. 컬럼 > MAX

컬럼 < ALL : 가장 작은 값보다 작다. 컬럼 < MIN


- FROM을 이용한 SUBQUERY

  : FROM 절 상에 오는 서브쿼리로 VIEW처럼 작용한다.


- EXIST를 이용한 SUBQUERY

  :  데이터의 존재 유무를 파악한다.


반응형

댓글