더북(TheBook)

쿼리 10-1에서 컬러로 표시된 부분이 스칼라 서브쿼리입니다. 사원정보 테이블에는 dept_id만 있고 부서명(dept_name)이 없으므로 부서정보 테이블의 부서명을 가져오도록 스칼라 서브쿼리를 작성한 것이죠. dept_id 값이 같은 건을 가져오기 위해 서브쿼리 내에서 부서정보 테이블과 조인을 했습니다. 또한 ‘왕건’ 데이터처럼 dept_id 값이 NULL이어서 서브쿼리가 반환하는 데이터가 하나도 없는 경우 서브쿼리는 NULL을 반환합니다.

다시 한번 강조하지만 스칼라 서브쿼리는 반드시 하나의 값만 반환해야 합니다. 서브쿼리 내의 SELECT 절에서 두 개 이상의 독립적인 컬럼이나 표현식을 사용한다거나 반환되는 데이터가 2건 이상일 경우 오류가 발생해 결과가 조회되지 않습니다. 이런 이유로 서브쿼리 내에서는 메인쿼리에서 사용된 테이블과 조인을 하는 경우가 많습니다. 물론 경우에 따라서 조인을 하지 않아도 서브쿼리가 단일 값을 반환한다면 조인할 필요가 없죠.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.