TIL 2024-08-01 SQLD 공부 - NOT 연산은 드모르간 법칙을 이용하면 쉽당
문제가 나왔다.
- 다음 중 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번이다!!
앞으로 부정문 풀이는 이렇게~~~~