다음 SQL의 [집합 연산자] 자리에 연산자를 바꿔 넣어 실행한 결과에… | [SQLD] SQL 개발자 기출유형 모의고사 1회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 1회
다음 SQL의 [집합 연산자] 자리에 연산자를 바꿔 넣어 실행한 결과에 대한 설명으로 옳은 것은? (MINUS 는 Oracle 의 차집합 연산자로 EXCEPT 와 같다)[봄학기]
| 학번 |
|---|
| 10 |
| 20 |
| 20 |
| 30 |
| (null) |
[가을학기]
| 학번 |
|---|
| 20 |
| 40 |
| (null) |
SELECT 학번 FROM 봄학기 [집합 연산자] SELECT 학번 FROM 가을학기;
1
MINUS 결과는 3행이다
2
INTERSECT 결과는 2행이다
3
UNION 결과에 NULL 행은 없다
4
UNION ALL 결과는 7행이다
해설
INTERSECT는 양쪽에 모두 있는 값을 중복 없이 돌려주는데, 집합 연산은 NULL 을 같은 값으로 비교하므로 20과 NULL 의 2행이 된다.
MINUS 는 봄학기에만 있는 10, 30을 중복 제거해 돌려준다.
- MINUS 결과는 20의 중복과 무관하게 10·30 의 2행이다.
- UNION 결과에는 NULL 이 한 행 포함된다.
- UNION ALL 은 5행과 3행을 그대로 이어 8행이다.
오류나 개정된 내용이 보이면 알려주세요