오라클 DB(sql)_기초_12 (서브쿼리,Sub query)
데이터베이스 2021. 5. 1. 19:49- 특정값을 모를때 서브쿼리를 사용하도록 함.
- 서브쿼리를 괄호로 묶는다
- 비교조건의 오른쪽에 서브쿼리를 집어넣는다..
- 서브쿼리는 메인쿼리가 받아들여야 하는 조건값을 대체하도록 한다.
- Order by 절에는 쓰지않는게 좋다.
: sub쿼리의 결과값은 출력되는게 아니라 굳이 정렬해서 성능을 떨어뜨릴 필요가 없음. - 단일 행 서브쿼리에는 단일 행 연산자를 사용하고 다중행 서브 쿼리에는 다중행 연산자를 사용합니다.
(1개의 데이터를 반환하는것은 단일연산자, 복수개의 데이터를 반환하는 것은 복수연산자를 사용함) - 넘겨주는 데이터의 타입이 원하는 데이터의 타입과 일치해야함.
<서브쿼리 작성시>
- 내가 뭘 모르는지
- 내가 모르는값을 sub 쿼리에서 찾기
- 받아들이는 메인쿼리에서 누가 받아들일 것인지.(data 타입은 일치해야 함)
[서브쿼리를 쓰지않고 조인을 썼을떄]
[서브쿼리 사용했을 때-조인이 일어나지 않아 성능적인면에 이득을 봄]
꼭 같은컬럼값을 돌려주는 경우가 아니어도, 데이터타입만 맞으면 서브쿼리에서 사용할 수 있음.
Having 절에서도 where절과 동일하게 서브쿼리가 사용가능함.
직업별(group by 사용)로 평균급여의 최저급여를 받는 직업과 평균급여
결과값이 다중으로 나오는 것에 단일연산자를 사용하여 에러가 발생하였음
단일연산자를 다중연산자인 In으로 바꾸었더니, 정상적인 결과가 도출됨,.
***서브쿼리가 값을 반환하지 않는 경우(null값이 떨어짐)에는 어떠한 값도 찾아낼수 없음.***
Haas 라는 사원이 존재하지 않기때문에 null값을 반환하게 됨. 그래서 아무결과도 출력되지 않음.
'데이터베이스' 카테고리의 다른 글
오라클 DB(sql)_기초 12~13 서브쿼리 예제풀이 (0) | 2021.05.01 |
---|---|
오라클 DB(sql)_기초_13 (다중행 서브쿼리, any, all) (0) | 2021.05.01 |
오라클 DB(sql)_기초_11_예제풀이 (0) | 2021.05.01 |
오라클 DB(sql)_기초_11 (Group by) (0) | 2021.05.01 |
오라클 DB(sql)_기초_10 (Join) _ 예제풀이 (0) | 2021.05.01 |