SQLD(SQL 개발자) 기출 · 서브쿼리
아래 테이블은 어느 회사의 사원들과 이들이 부양하는 가족에 대한 것으로 밑줄 친 칼럼은 기본키(Primary Key)를 표시한 것이다. 다음 중 '현재 부양하는 가족들이 없는 사원들의 이름을 구하라'는 질의에 대해 아래 SQL 문장의 (ㄱ), (ㄴ) 에 들어 갈 내용으로 가장 적절한 것은?
본문)
[테이블]
사원 (사번, 이름, 나이)
가족 (이름, 나이, 부양사번)
* 가족 테이블의 부양사번은 사원 테이블의 사번을 참조하는 외래키(Foreign Key) 이다.
[SQL 문장]
SELECT 이름
FROM 사원
WHERE (ㄱ) (SELECT * FROM 가족 WHERE (ㄴ))이 문제 풀어보기
정답 및 해설 보기
정답: 2번
‘현재 부양하는 가족들이 없는 사원들의 이름을 구하라’를 구현하는 방법은 가족 테이블에 부양사번이
없는 사원 이름을 사원 테이블에서 추출 하면 되고, SQL 문장으로 NOT EXISTS, NOT IN , LEFT
OUTER JOIN을 사용하여 구현 할 수 있다.
1. NOT EXISTS
SELECT 이름
FROM 사원
WHERE NOT EXISTS (SELECT * FROM 가족 WHERE 사번 = 부양사번)
2. NOT IN
SELECT 이름
FROM 사원
WHERE 사번 NOT IN (SELECT 부양사번 FROM 가족)
3.LEFT OUTER JOIN
SELECT 이름
FROM 사원 LEFT OUTER JOIN 가족 ON (사번 = 부양사번)
WHERE 부양사번 IS NULL
없는 사원 이름을 사원 테이블에서 추출 하면 되고, SQL 문장으로 NOT EXISTS, NOT IN , LEFT
OUTER JOIN을 사용하여 구현 할 수 있다.
1. NOT EXISTS
SELECT 이름
FROM 사원
WHERE NOT EXISTS (SELECT * FROM 가족 WHERE 사번 = 부양사번)
2. NOT IN
SELECT 이름
FROM 사원
WHERE 사번 NOT IN (SELECT 부양사번 FROM 가족)
3.LEFT OUTER JOIN
SELECT 이름
FROM 사원 LEFT OUTER JOIN 가족 ON (사번 = 부양사번)
WHERE 부양사번 IS NULL