사원관리 데이터베이스에는 [부서정보] 테이블과 실적 정보를 포함한 [사… | [컴퓨터활용능력 1급 필기] 15년 2회차 기출문제 상세 페이지
1[컴퓨터활용능력 1급 필기] 15년 2회차
사원관리 데이터베이스에는 [부서정보] 테이블과 실적 정보를 포함한 [사원정보] 테이블이 관계로 연결되어 있다. 다음 중 아래의 SQL문의 실행 결과에 대한 설명으로 옳은 것은? (단, 부서에는 여러 사원이 있으며, 한 사원은 하나의 부서에 소속되는 1 대 다 관계임)
SELECT 부서정보.부서번호, 부서명, 번호, 이름, 실적
FROM 부서정보 RIGHT JOIN 사원정보 ON 부서정보.부서번호 = 사원정보.부서번호;
1
두 테이블에서 부서번호가 일치되는 레코드의 부서번호, 부서명, 번호, 이름, 실적 필드를 표시한다.
2
[부서정보] 테이블의 레코드는 모두 포함하고, [사원정보] 테이블에서는 실적이 있는 레코드만 포함하여 결과를 표시한다.
3
[부서정보] 테이블의 레코드는 [사원정보] 테이블의 부서번호와 일치되는 것만 포함하고, [사원정보] 테이블에서는 실적이 있는 레코드만 포함하여 결과를 표시한다.
4
[부서정보] 테이블의 레코드는 [사원정보] 테이블의 부서번호와 일치되는 것만 포함하고, [사원정보] 테이블에서는 모든 레코드가 포함하여 결과를 표시한다.
해설
제시된 문은 FROM 부서정보 RIGHT JOIN 사원정보 ON 부서정보.부서번호 = 사원정보.부서번호 로 두 테이블을 연결한다. RIGHT JOIN은 오른쪽 테이블의 레코드를 모두 포함하고, 왼쪽 테이블에서는 조인 조건이 일치하는 레코드만 가져오는 외부 조인이다.
여기서 오른쪽에 놓인 것은 [사원정보]이므로 사원정보의 레코드는 실적 값이 있든 없든 전부 결과에 표시된다. 반대로 [부서정보]는 사원정보의 부서번호와 일치하는 것만 남으므로, 소속 사원이 한 명도 없는 부서는 결과에 나타나지 않는다.
두 테이블에서 부서번호가 일치되는 레코드만 표시하는 것은 내부 조인(INNER JOIN)의 결과이고, [부서정보]의 레코드를 모두 포함하려면 LEFT JOIN이어야 한다. 또 실적이 있는지 여부는 조인 방식이 아니라 WHERE 절로 걸러야 하는 조건이므로, 실적이 있는 레코드만 남는다는 설명도 맞지 않는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.