ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [3회차-②] ORACLE (JOIN과 서브쿼리)
    ORACLE 2021. 5. 2. 18:39

    강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정

    강의 날짜 : 21.04.28

     

     

    <JOIN>

     

    JOIN은 내가 가지고 있지 않은 정보를 다른 테이블을 통해서 가져오는 것이다.

    WHERE절에서 조인 조건을 사용한다.

    명확성을 위해서 컬럼명 앞에 테이블명 또는 테이블 별칭을 사용해 준다.

     

     

    1. EQUAL JOIN

     

     

    가상 듀얼 테이블에서 두 테이블을 모두 가져와서 구성을 하고 조건을 주어 걸러내는 작업을 하는 것이다.

     

     

    EMP테이블의 부서번호와 DEPT 테이블의 부서번호가 같은 경우의 가상 테이블을 생성한 후,

    그 테이블에서 AND 연산을 진행한다.

    즉, 가상 테이블에서 이름에 A가 들어가는 경우로 걸러내는 것이다.

     

     

     

    2. SELF JOIN

     

    자기 테이블 하나만 가지고도 JOIN은 가능하다.

     

     

    관리자 번호와 사원번호가 일치하는 경우를 찾아서 이름을 가지고 오게 하는 JOIN이다.

     

     

     

    3. 표준 JOIN

     

     

    * ANSI INNER JOIN

    ANSI : 미국 표준 위원회. 코딩 표준 규격을 제공한다.

    INNER JOIN : 내부의 값을 사용해서 값이 일치하는 경우에 JOIN (내부조인)

     

    앞의 JOIN은 오라클에서만 가능하지만 표준 조인은 어디서도 사용이 가능하다.

     

    INNER JOIN에서 INNER는 생략이 가능하다.

     

     

    USING을 쓰면 앞의 테이블을 기준으로 하고 동일한 컬럼명의 컬럼도 앞의 테이블의 컬럼으로 쓴다.

     

    즉 JOIN은 열들의 결합이다.

    INNER JOIN은 교집합, FULL JOIN은 합집합(UNION)이다.

     

     

     

    <서브 쿼리>

     

    SELECT(MAIN쿼리) 안의 SELECT(서브 쿼리)

     

    서브 쿼리는 비교 연산자의 오른쪽에 기술하고 괄호로 묶어서 우선 순위를 먼저 준다.

    MAIN 쿼리 이전에 한번만 실행이 되어야 한다.

     

     

    1. 단일행 서브 쿼리

     

    즉, 서브쿼리문에서 부서번호가 10인 테이블 D를 설정하고,

    EMP 테이블에서의 부서번호가 10인 사원의 이름과 부서명을 조회하는 명령문이다.

     

     

    서브쿼리에서 월급의 평균을 먼저 구한다.

    이후 평균보다 큰 월급을 받는 사원을 조회하고 그것을 월급을 기준으로 내림차순으로 정렬한다.

     

     

     

    2. 다중행 서브쿼리

     

    연산자
    IN
    ANY
    ALL

     

    * IN

     

    각 부서에서 가장 적은 월급을 받는 사원의 사원명, 월급, 부서 번호를 출력한 것이다.

     

    IN연산자를 사용하여 다중행 쿼리 안에 해당 값과 일치하는 경우를 조회한다.

     

     

     

    * ALL

     

    > ALL (   ) : 최대보다 큰 경우

    < ALL (   ) : 최소보다 작은 경우

     

     

    * ANY

     

    > ANY (   ) : 최소값보다 큰 경우

    < ANY (   ) : 최대값보다 작은 경우

     

     

Designed by Tistory.