서브쿼리
- sql 쿼리 안에 다른 sql 쿼리가 삽입되는 것
- 서브쿼리가 조인보다 효율이 더 좋다고 한다.
select절 - 단일 값만 반환 가능 (단일 값, sum, count 같은 것)
from절 - 반환 값이 테이블만 가능
where절 - 단일 값과, 복수 값 모두 가능.
참고블로그:
https://mjn5027.tistory.com/51
어떨 때는 서브쿼리쓰고 어떨때는 join 사용하냐?
내 생각에는 메인쿼리에서 출력해야할 속성이 다른테이블을 참조하지 않을 경우 서브쿼리로만 해도될 것 같다.
ex ) 메인쿼리 : select A1, A2, 테이블2.B1 from '테이블1'
이럴경우는 메인쿼리에서 테이블2의 값을 참조하기 때문에 조인을 사용하는게 좋을 것 같다..
상관 서브쿼리
- 서브쿼리의 조건식에서 메인쿼리의 테이블과 조건식이 필요한 경우
- 메인쿼리와 하위쿼리가 연관, 상관이 있어야 한다.
속성으로 복수의 값이 들어 와야할 것 같은 경우에 상관 서브쿼리를 사용한다.실제로는 복수의 값이 들어올 수 없는데, 복수의 값이 들어와야 할 것만 같은 경우에 select를 한번 더 써줘서 값을 단일로 불러오는 개념인 듯.. (확실하진 않으니 느낌만 이해할 것.)
select 상품코드 from 신발테이블 a1
where 매출 > ( select avg(매출) from 신발테이블 a2 where a2.매출 = a1.매출)
- 하위 쿼리에 where 절로 아래와 같이 표현 한다.
( WHERE a1.속성1 = a2.속성1)
Alias a1, a2은 모두 동일 테이블 '테이블 1' 의 별칭이다.
그냥, 약간 재귀함수 마냥 같은 테이블의 내용을 참조하는 할 경우에 저런 조건식으로 사용한다고 외우면 편합니다.
상관 서브쿼리 예시
아래 두 쿼리문은 결과가 똑같음 (굳이 표현해봤음)
SELECT bookNAME,(SELECT bookid FROM book a2 WHERE a2.bookid = a1.bookid) FROM book a1;
SELECT bookname, bookid FROM book;
반응형
'개발 > 데이터베이스' 카테고리의 다른 글
(데이터베이스) 숫자 내장함수 (0) | 2022.04.26 |
---|---|
오라클 쿼리 실행 시간 확인 방법 (0) | 2022.04.25 |
(데이터이스 ) Join (Inner Join, Outer Join, full, Self Join) (0) | 2022.04.21 |
(데이터베이스) DDL, DML, DCL (0) | 2022.04.19 |
데이터베이스 (Database) (0) | 2022.04.16 |
댓글