문제가 나왔다.
- 다음 중 SQL 결과가 다른 쿼리를 고르시오
1. SELECT * FROM MARIN WHERE NOT (HP < 300 AND HP > 500);
2. SELECT * FROM MARIN WHERE HP BETWEEN 300 AND HP 500;
3. SELECT * FROM MARIN WHERE HP >= 300 AND HP <= 500;
4. SELECT * FROM MARIN WHERE NOT (HP < 300 OR HP > 500);
2번이랑 3번은 마린의 HP가 300 이상 500 이하 라는 것이 명확하기에 패스
1번이랑 4번이랑 헷갈렸다.
그래서 드모르간 법칙을 이용해보았다.
드모르간 법칙이란~~~~
부정연산이 있을 때
AND -> OR
< -> >=
이렇게 바꾸는 거다~ 그냥 반대로!!
집합론에서 쓰이는 건뎅 이런 부정연산할때도 적용할 수 있더라~~
1번이랑 4번 드모르간으로 부정연산 말구 일반 연산으로 바꿔보겠다~~~~~~
1번 풀이
원본 쿼리
SELECT * FROM MARIN WHERE NOT (HP < 300 AND HP > 500);
편의상 셀렉 프롬절 생략
1. WHERE NOT(HP < 300) OR NOT(HP > 500);
2. WHERE HP >= 300 OR HP <= 500
1번 - WHERE HP >= 300 OR HP <= 500
2번 풀이
원본 쿼리
SELECT * FROM MARIN WHERE NOT (HP < 300 OR HP > 500);
1. WHERE NOT(HP < 300) AND NOT(HP > 500);
2. WHERE HP >= 300 AND HP <= 500
2번 - WHERE HP >= 300 AND HP <= 500
이렇게 된다~~~~~~~
1번은 쿼리를 저렇게 적으면 항상 긍정이 되기 때문에 그냥 적으나 마나다!!
그래서 정답이 1번이다!!
앞으로 부정문 풀이는 이렇게~~~~
'TIL' 카테고리의 다른 글
TIL 2024-08-05 다익스트라 알고리즘 (0) | 2024.08.06 |
---|---|
TIL 2024-08-02 SQLD 공부 - 오라클에서의 Group By 오류 (0) | 2024.08.02 |
TIL 2024-07-31 EC2, Ubuntu 스왑 메모리 (2) | 2024.07.31 |
TIL 2024-07-30 Union Find 알고리즘 (1) | 2024.07.30 |
TIL 2024-07-25 값 객체란 무엇일까 (2) | 2024.07.25 |