1) Having절 서브쿼리 : Having절에서 사용

 

 ※문제) 부서별 월급합계의 평균보다 높은 월급합계를 가지는 부서의 부서명과 월급합계를 출력

① From절 서브쿼리와, Where절 서브쿼리를 사용

 

 

 

>> 부서별 급여합계의 평균인 57618 보다 큰 부서명과 월급합계가 출력된다.

 

 

② Having절 서브쿼리 사용

 

 

>> Group by의 조건절인 Having절에 서브쿼리를 사용한 결과와

    From절, Where절 서브쿼리를 사용한 결과가 같다.

 

 

 

2) 계층형 쿼리

 

① 계층형 쿼리 >> Hierarchy (계층구조)
    Root(뿌리) -> 제일 꼭대기

Branch(가지) -> 말단이 아닌 Node

leaf(잎) -> 말단인 Node

 

② Connect By

 

 

 

 

 

 

 

블로그 이미지

모데스티

,

1) 복수컬럼 서브쿼리 : Where절에서 사용

복수컬럼 서브쿼리

 

 

>> salary와 hire_date가 같은 사람이 없기 때문에 결과가 나오지 않는다. 

 

2) 상관 서브쿼리 : Select 절에서 사용

① 상관 서브쿼리 >> join을 쓰지 않거나, 못 쓰는 경우

ex) group by를 쓰는 경우

 

>> Select절에서 다른 Select절을 사용한다.

 

② 상관 서브쿼리 예제 

 

>> select절에서 다른 select절을 써서 출력할 수 있다.

 

 

 

블로그 이미지

모데스티

,

1) 복수행 서브쿼리 : Where절에서 사용

 

※ 복수행 서브쿼리의 연산자

   ⓐ all : 모두

   ⓑ any : 어떤 것 중에 하나

   ⓒ in : 중에 하나라도 같다 (= any)

   ⓓ exists : 존재유무

 

① all 

 

>> 첫 번째 실행결과 : 하나의 salary의 값과 부서번호가 60인 모든 사람들의 salary를 비교할 수 없다.

 

>> 두 번째 실행결과: all을 써줄경우 정상적으로 실행된다.

 

② in

>> 실행결과 : 부서번호가 80번인 사원을 제외한 나머지 사원들 중 80번 부서 사원과 같은 월급을 받는 사람들이 출력된다.

 

③ not in

>> 실행결과 : 80번 부서 사원들과 다른 월급을 받는 사원들 모두가 출력된다.

 

④ exists 

>> 실행결과 : 월급이 20000이 초과되는 사원의 모든 내용이 출력된다.

 

 

 

 

블로그 이미지

모데스티

,

1) 단일행 서브쿼리 : Where절에서 사용

 

① 단일행 서브쿼리

 

 

2) 예제

 

예제1)

 

예제2)

>> 첫 번째 실행결과 : 사원들의 이름과 직업아이디가 출력이된다.

 

>> 두 번째 실행결과 : 사원들의 이름과 employees에 jobs를 left join하여 직업명이 출력되도록 하였다.

 

예제3)   

 

>> 첫 번째 실행결과 : 같은 부서에 근무하는 사람들의 이름과 부서번호를 출력

 

>> 두 번째 실행결과 : Diana를 제외한 같은 부서에 근무하는 사람들의 이름과 부서번호 그리고 employees에 departments를 left join하여 부서명까지 출력하도록 하였다

 

블로그 이미지

모데스티

,

※ Non-equi Join

 

Non-equi Join

>> 조인의 조건이 = 이 아닌 것 

 

 

 

 

 

 

블로그 이미지

모데스티

,

 

※ scott계정 unlock

 

① cmd에서 관리자로 접속

 

② scott계정 만들기

>> 계정이 잠겨있기 때문에 접속할 수 없다.

 

③ 관리자로 접속하여 계정을 unlock하고 비밀번호 설정

 

④ 접속결과

 

블로그 이미지

모데스티

,