select 속성 from 테이블 where 조건
질의문은 이러한 큰 문장구조를 가지고 있는데 이중에서 테이블이 오는 곳이라면 어디든 질의문이 들어갈 수 있다. 보통은 from 이나 where 조건절에 나온다.
Select name
from professor
where salary = (select salary from professor where pID='10') and pID <> '10';
-- 서브질의에서 하나의 터플만 반환하기 때문에 **등호**를 사용할 수 있다.
-- 이렇게 하나만 반환하는 것을 single-row subquery 를 scalar subquery 라고 한다.
: 주어진 여러개의 값들 중에 속해 있으면 true
Select name, salary
from professor
where pID IN (10, 21, 22);
Select count(distinct sID) from takes
where (cID, semester, year)
IN (select cID, semester, year from teaches where pID = 10);
-- 여러개의 속성을 동시에 비교하는 것도 가능하다.
: 하나의 값을 여러 값들과 비교하는 것은 쉽지않다. 그래서 all, some, any 연산자를 통해 연산한다.
: 지금까지는 subquery(외부) 에 나오는 from 절의 속성이 내부 속성과 상관이 없어서 개별적으로 이해된다.
correlated subquery는 내부에서 외부 query 의 touple 을 기준으로 내부 중첩질의를 실행한다.
: subquery의 결과가 존재하면 true
Select S.cID
from teaches as S
where S.semester = 'Fail' and S.year= 2009 and
exists (select *
from teaches as T
where T.semester = 'Fail' and T.year= 2010 and S.cID = T.cID);
: 연산자를 제공해주지는 않는다. ‘X - Y = ∅’ 을 이용해서 나타낸다.