다음 SQL의 실행 결과로 옳은 것은?[도서]도서번호제목분류B1DB_설… | [SQLD] SQL 개발자 기출유형 모의고사 5회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 5회
다음 SQL의 실행 결과로 옳은 것은?[도서]
| 도서번호 | 제목 | 분류 |
|---|---|---|
| B1 | DB_설계 | 기술 |
| B2 | DB설계 | 기술 |
| B3 | 봄_여름 | (null) |
| B4 | 겨울밤 | (null) |
| B5 | 여름밤 | 소설 |
| B6 | 가을 | 역사 |
SELECT 도서번호, 제목
FROM 도서
WHERE 제목 LIKE '%#_%' ESCAPE '#'
OR 분류 IN ('소설', NULL)
ORDER BY 도서번호;1
| 도서번호 | 제목 |
|---|---|
| B1 | DB_설계 |
| B5 | 여름밤 |
2
| 도서번호 | 제목 |
|---|---|
| B1 | DB_설계 |
| B3 | 봄_여름 |
| B4 | 겨울밤 |
| B5 | 여름밤 |
3
| 도서번호 | 제목 |
|---|---|
| B1 | DB_설계 |
| B2 | DB설계 |
| B3 | 봄_여름 |
| B4 | 겨울밤 |
| B5 | 여름밤 |
| B6 | 가을 |
4
| 도서번호 | 제목 |
|---|---|
| B1 | DB_설계 |
| B3 | 봄_여름 |
| B5 | 여름밤 |
해설
ESCAPE '#'로 #_ 가 밑줄 문자 자체를 뜻하므로 제목에 _ 가 든 B1·B3 이 일치하고, IN 목록에서 소설과 같은 B5 가 더해진다.IN 의 NULL 은 = NULL 비교라 UNKNOWN이 되어 분류가 NULL 인 B4 를 잡지 못하며, B3 은 LIKE 가 TRUE 라 OR 로 통과한다.
- B4 를 넣은 표는 IN 목록의 NULL 이 NULL 행과 일치한다고 오해했다.
- 여섯 행이 모두 나온 표는 _ 를 한 글자 와일드카드로 해석했다.
- B3 을 뺀 표는 분류가 NULL 이면 OR 전체가 거짓이 된다고 본 것이다.
오류나 개정된 내용이 보이면 알려주세요