10. 중첩 질의문
중첩 질의문의 개요
중첩질의문은 조인구문과 사실 똑같은데 어떤 사람들에겐 조인보다 중첩 질의문으로 생각하는게 더 편할수도 있다. 중첩 질의문으로 인해 sql의 파워가 훨씬 증가하진 않지만, 표현능력이 향상된다.
단일행 서브 쿼리 : 검색조건이 후보키와 연관되있을경우 한 튜플당 하나밖에 없는 고유값이기때문에 한개의 튜플만 나올수밖에 없음.
다중행 서브쿼리의 경우 피연산자의 타입이 맞지 않아서 일반적인 비교 연산자를 사용할 수 없음.
사원번호가 기본키니까 = 연산자를 사용해도 문제가 없다. 단일행 서브쿼리이기때문.
봉급이 500 이상인 사원과 같은 부서에서 근무하는 사원들은 여러명은 여러명이라 다중행이고, 그래서 비교연산자(=)를 쓸 수 없다.
= 대신 IN을 쓰면 된다.
20번 부서 사원들의 월급보다 더 많은 봉급을 받는 사원의 이름, 봉급, 사원번호 찾기. 20번부서 사원들이 여러명이기때문에 다중행 서브 쿼리이다. 20번 부서 사원들중에 최소 봉급보다 많기만하면 나오게 된다. 20번부서 사원들중 아무나(any)보다 봉급이 높으면 되기 때문에.
10번 부서의 모든 사원 급여보다 많은 급여를 가지는 사람. 즉, 10번부서 사원중 최대 급여보다 더 많은 급여를 받는 사람을 찾는다.
101번 사원과 같은 부서이면서 같은 급여를 받는 직원을 구한다.
앞서 봤던 서브쿼리들은 비상호 연관 서브쿼리였다.
Employee E가 서브쿼리의 조건절에 다시 나타나기때문에 상호 연관 서브 쿼리다.
서브쿼리에서 질의 결과를 정렬해봤자 쓸데없다.
'Data Analysis > Database (SQL)' 카테고리의 다른 글
[SQL 활용] 12. 순위 계산 (0) | 2020.05.10 |
---|---|
[SQL 활용] 11. 집합 연산자와 집단 연산자 (0) | 2020.05.10 |
[SQL 활용] 09. 조인 질의문 (0) | 2020.05.04 |
[SQL 활용] 08. 트랜잭션 (0) | 2020.05.04 |
[SQL 활용] 07. 데이터 삽입과 변경 (0) | 2020.05.04 |