19.12.04. SUB QUERY, EXISTS 등
데이터베이스 구현
2019-12-05 20:52:42
▶ 서브 쿼리의 분류 (사용 위치)
1. SELECT 에서 사용
: 스칼라 서브쿼리(Scalar subquery). 하나의 행, 하나의 컬럼만 리턴하는 서브쿼리.
2. FROM 에서 사용
: Ilin view
3. WHERE 에서 사용
: 서브쿼리.
▶ 서브쿼리의 연산자 ( 멀티로우 연산자)
1. IN
: 서브쿼리 결과 중 같은 값이 있을 때.
2. ANY
: 서브쿼리 결과중 만족하는 것이 하나라도 있을 때.
3. ALL
: 서브쿼리 결과를 모두 만족시킬 때.
▶서브쿼리에서 NULL, NOT IN
: NOT IN 연산자 사용 시 NULL 이 데이터에 존재하지 않아야 정상 동작한다.
▶ Pairwise ( multi column subquery)
: 페어와이즈는 여러 컬럼의 값을 동시에 만족해야 하는 경우 사용.
ex) 매니저 번호가 7698 이면서 부서 번호가 30, 매니저 번호가 7839이면서 부서 번호가 10 인 직원 조회.
▶ 비상 호연관 서브 쿼리
: 메인 쿼리에서 사용하는 테이블, 서브 쿼리 조회 순서를 성능적으로 유리한 쪽으로 판단하여 순서 결정.
메인 쿼리와 서브 쿼리 중 무엇을 먼저 읽을지 오라클에서 결정한다.
상호 연관 서브 쿼리에서는 메인 쿼리를 먼저 읽은 후 서브 쿼리를 읽지만, 비상호연관 서브 쿼리는
서브 쿼리 단독적으로 실행할 수 있기 때문에 유리한 쪽으로 먼저 읽는다.
비상호 연관에서 서브 쿼리 쪽 테이블을 먼저 읽을 때 서브 쿼리가 제공자 역할을 했다고 표현함.
서브 쿼리 쪽 테이블을 나중에 읽을 때는 서브 쿼리가 확인자 역할을 했다고 표현함.
▶ EXISTS 연산자
-조건을 만족하는 서브 쿼리의 결괏값이 존재하는지 체크.
-조건을 만족하는 데이터를 찾으면 서브 쿼리에서 값을 찾지 않는다.
-여러 개가 존재해도 한건만 찾으면 끝냄.
-존재 여부를 확인하는 것뿐임.
-연산할 컬럼을 왼쪽에 적지 않는다.
-상호 연관 컬럼형태로 작성된 쿼리.
-EXISTS 뒤에 오는 것은 ture/false 로 나뉠 수 있다.
'database' 카테고리의 다른 글
oracle - Inner join, Cross join (0) | 2023.03.13 |
---|---|
oracle - OUTER JOIN (0) | 2023.03.13 |
oracle - GROUP, JOIN, EXERD 다운로드 (0) | 2023.03.13 |
oracle - CONDITION, VIRTUAL BOX 설치 (0) | 2023.03.13 |
oracle - 형변환의 종류, 숫자포맷, NULL처리 함수 (0) | 2023.03.13 |