테이블을 여러개 연결해서 검색하는 것을 조인 검색이라고 한다.
조인 검색 시에 각 테이블에 있는 속성의 이름은 달라도 되지만 도메인은 반드시 같아야 한다.
일반적으로 테이블의 관계를 나타내는 외래키를 조인 속성으로 이용한다.
SELECT 제품.제품명
FROM 제품, 주문
WHERE 주문.주문고객 = 'banana' AND 제품.제품번호 = 주문.주문제품;
이런식으로 조인 검색이라고 JOIN 을 꼭 사용하는 게 아니라 위처럼 검색하면 됨
사용 편의를 위해 FROM
에 들어오는 테이블에 닉네임을 붙일 수도 있다.
SELECT c.제품명
FROM 제품 c, 주문 o
WHERE o.주문고객 = 'banana' AND c.제품번호 = o.주문제품;
처음부터 읽었을 때
FROM
에서 닉네임을 지어주기전에SELECT
에서도 닉네임을 사용해서 의아할 수도 있는데, SQL은 비절차 언어이기 때문이다.
SELECT
안에 SELECT
를 사용할 수 있는데, 이것을 서브 쿼리라고 함.
서브 쿼리는 그 위에 있는 메인 쿼리보다 먼저 실행 됨.
다중 행 서브 쿼리에 사용 가능한 연산자가 있음.
예시) SELECT 제품명, 제조업체 FROM 제품 WHERE 제품번호 NOT IN (SELECT 주문제품 FROM 주문 WHERE 주문고객 = 'banana');
연산자 설명 IN 서브 쿼리의 결과값 중 일치하는 것이 있으면 검색 조건이 참 NOT IN 서브 쿼리의 결과값 중 일치하는 것이 없으면 검색 조건이 참 EXISTS 서브 쿼리의 결과 값이 하나라도 존재하면 검색 조건이 참 NOT EXISTS ALL ANY 또는 SOME