Goal

  • 더 세밀하게 검색할 수 있도록 3개의 논리 연산자 AND,OR,NOT을 알아본다

1. AND로 조합

 복수이 조건을 조합할 경우 AND를 가장 많이 사용합니다. AND는 논리 연산자의 하나로 좌우에 항목이 필요한 이항 연산자가 됩니다. 좌우의 식이 모두 참일 경우 AND연산자는 참을 반환합니다.

조건식1 AND 조건식2
SELECT *FROM test;
no  a  b  c
-----------
1   1  0  0
2   0  1  0
3   0  0  1
4   2  2  0
5   0  2  2

SELECT *FROM test WHERE a <> 0 AND b < 0
no  a  b  c
-----------
4   2  2  0
~~~~~~~~~~~

a열,b열이 모두 0이 아닌 행을 출력하라는 조건문 입니다.

2. OR로 조합하기

어느 쪽이든 하나만 참이 되면 조건식은 참을 반환하게 하고 싶으면 OR로 조건식을 연결합니다.

SELECT *FROM test;
no  a  b  c
-----------
1   1  0  0
2   0  1  0
3   0  0  1
4   2  2  0
5   0  2  2

SELECT *FROM test WHERE a <> 0 OR b < 0
no  a  b  c
-----------
1   1  0  0
2   0  1  0
4   2  2  0
5   0  2  2
~~~~~~~~~~~

※연산자의 우선 순위

AND 연산자가 OR연산자 보다 우선 순위가 높습니다.

SELECT *FROM test WHERE a=1 OR a=2 AND b=1 OR b=2;

WHERE구를 살펴보면, AND연산자의 우선순위가 OR보다 높기 때문에 AND연산자를 먼저 처리하고 OR연산자를 처리합니다. 따라서 OR연산자로 3개의 조건이 주어진것입니다.

WHERE a=1 OR (a=2 AND b=1) OR b=2
  • a=1
  • a=2 AND b=1
  • b = 2

위의 3개의 조건중 하나라도 참이면 참으로 반환하기 때문에 아래와 같은 결과값이 출력 됩니다.

no  a  b  c
-----------
1   1  0  0
4   2  2  0
5   0  2  2

3. NOT으로 조합

NOT 연산자는 오른쪽에만 항목을 지정하는 '단항 연산자' 입니다. 오른쪽에 지정한 조건식의 반대 값을 반환 합니다.

NOT 조건식
SELECT *FROM test;
no  a  b  c
-----------
1   1  0  0
2   0  1  0
3   0  0  1
4   2  2  0
5   0  2  2


SELECT *FROM test WHERE NOT(a<>0 OR b<>0);
no  a  b  c
-----------
3   0  0  1