오라클 DB(sql)_기초_12 (서브쿼리,Sub query)

데이터베이스 2021. 5. 1. 19:49
  • 특정값을 모를때 서브쿼리를 사용하도록 .
  • 서브쿼리를 괄호로 묶는다
  • 비교조건의 오른쪽 서브쿼리를 집어넣는다..
  • 서브쿼리는 메인쿼리가 받아들여야 하는 조건값을 대체하도록 한다.
  • Order by 절에는 쓰지않는게 좋다.
    :  sub
    쿼리의 결과값은 출력되는게 아니라 굳이 정렬해서 성능을 떨어뜨릴 필요가 없음.
  • 단일 서브쿼리에는 단일 연산자를 사용하고 다중행 서브 쿼리에는 다중행 연산자를 사용합니다.
    (1
    개의 데이터를 반환하는것은 단일연산자, 복수개의 데이터를 반환하는 것은 복수연산자를 사용함)
  • 넘겨주는 데이터의 타입이 원하는 데이터의 타입과 일치해야함.

 

<서브쿼리 작성시>

  1. 내가 모르는지
  2. 내가 모르는값을 sub 쿼리에서 찾기
  3. 받아들이는 메인쿼리에서 누가 받아들일 것인지.(data 타입은 일치해야 )

 

[서브쿼리를 쓰지않고 조인을 썼을떄]

 

[서브쿼리 사용했을 -조인이 일어나지 않아 성능적인면에 이득을 ]

 

같은컬럼값을 돌려주는 경우가 아니어도, 데이터타입만 맞으면 서브쿼리에서 사용할 있음.

 

Having 절에서도 where절과 동일하게 서브쿼리가 사용가능함.

 

직업별(group by 사용) 평균급여의 최저급여를 받는 직업과 평균급여

 

 

결과값이 다중으로 나오는 것에 단일연산자를 사용하여 에러가 발생하였음

 

단일연산자를 다중연산자인 In으로 바꾸었더니, 정상적인 결과가 도출됨,.

 

***서브쿼리가 값을 반환하지 않는 경우(null값이 떨어짐)에는 어떠한 값도 찾아낼수 없음.***

Haas 라는 사원이 존재하지 않기때문에 null값을 반환하게 . 그래서 아무결과도 출력되지 않음.

admin