TIL

TIL 2024-08-01 SQLD 공부 - NOT 연산은 드모르간 법칙을 이용하면 쉽당

wonow_ 2024. 8. 1. 14:56

 

문제가 나왔다.

 

- 다음 중 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번이다!!

 

앞으로 부정문 풀이는 이렇게~~~~