[231111] SQLD 2과목_2장(75~84)

ese2o·2023년 11월 11일

SQLD

목록 보기
8/8

교재: SQL 자격 검정 실전 문제
2과목 제2장 - SQL 활용
75번 ~ 84번

75번

답: LEFT (OUTER) JOIN
사원이 없는 부서 정보도 같이 출력하려면, DEPT 테이블은 모두 출력하는 것이므로 LEFT OUTER JOIN을 해야 한다.

76번

답: 2번

OUTER JOIN에서 ON절은 조인할 대상을 결정한다. 이때 기준 테이블은 항상 모두 표시된다
결과 건에 대한 필터링은 WHERE 절에서 수행된다.

77번

답: 1번

보기는 게시판별 게시글의 개수를 조회하는 SQL구문이다. 이때 게시글이 존재하지 않는 게시판도 조회되어야 한다. ORACLE에서는 (+) 기호를 사용하여 처리할 수도 있으며, 이를 ANSI 문장으로 변경하기 위해서는 INNER쪽 테이블(게시글)에 조건절을 ON절에 함께 위치시켜야 정상적인 OUTER JOIN을 수행할 수 있다.
A.ID = B.ID(+) : LEFT OUTER
A.ID(+) = B.ID : RIGHT OUTER

(+) 표시가 있는 A.ID = B.ID 와 B의 '삭제여부' 조건을 ON절에 표기하고 있는 건 1번뿐이다.

78번

답: 5
NOT EXISTS에 주의하도록 하자.

79번

답: 4번
EXCEPT는 차집합에 대한 연산이므로 NOT IN 또는 NOT EXISTS로 대체하여 처리가 가능하다.
2번은 NOT IN을 사용하였으나, PK컬럼 A, B에 대하여 각각 NOT IN 연산을 수행하여 다른 결과가 생성된다.
+) 1번의 <> 표시는 같지 않다는 뜻이다.

80번

답: 2번
코드도 중요하지만 각 컬럼에 담긴 의미를 파악하는 것도 중요하다.

1번: 이용된 적이 있었던 서비스를 추출하는 것은 동일하나 서비스와 서비스이용은 1:N 관계이므로 서비스이용건수만큼 추출되므로 전체 결과가 다르다. GROUP BY를 수행하면 동일한 결과를 출력할 수 있다.
2번: 전체 서비스에서 이용된 적이 있었던 서비스를 MINUS하였으므로 이용된 적이 없었던 서비스가 서브쿼리에서 추출된다. 그러므로 NOT EXISTS 구문을 적용하면 이용된 적이 있었던 서비스가 출력된다.
3번: 서비스를 기준으로 OUTER JOIN을 수행하였으므로, 이용된 적이 없었던 서비스만 출력된다. B.서비스ID IS NOT NULL로 변경해야 동일한 결과가 출력된다.

81번

답: 2번

SET OPERATOR : 합집합은 UNION, 교집합은 INTERSECT, 차집합은 MINUS/EXCEPT이다.

82번

답: 2번
첫 번째 컬럼인 ENAME을 기준으로 정렬하면, J가 S보다 먼저 오기 때문에 2번이 답이 된다.

ORDER BY 1, 2 : 1번째 컬럼을 기준으로 정렬 후 2번째 컬럼을 기준으로 정렬한다. 뒤에 DESC ASC가 올 수 있다.

83번

답: 1번
집합 연산자는 SQL에서 위에 정의된 연산자가 먼저 수행된다.
그러므로 UNION이 나중에 수행되므로 결과적으로 중복 데이터가 모두 제거되어 1번과 같은 결과가 도출된다. 만일 UNION과 UNION ALL의 순서를 바꾼다면 2번과 같은 결과가 도출된다.

84번

답: 1번

0개의 댓글