Files
learn-with-making-clean-arc…/도서/SQL첫걸음/Lecture07.md
2021-12-13 21:23:43 +09:00

3.9 KiB

07강. 조건 조합하기

AND, OR, NOT

조건식1 AND 조건식2
조건식1 OR 조건식2
NOT 조건식
  • 조건식을 조합해 사용할 경우 복수의 조건은 WHERE 구로 지정한다.
  • 조합할 때는 AND, OR, NOT의 3가지 방법을 사용할 수 있다.

1. AND로 조합하기

  • 복수의 조건을 조합할 경우 AND를 가장 많이 사용한다.
  • AND는 논리 연산자의 하나로 좌우에 항목이 필요한 이항 연산자가 된다.
  • 좌우의 식 모두 참일 경우 AND 연산자는 참을 반환한다.
  • 모든 조건을 만족하는 경우 조건식은 참이 된다고 할 때 AND 연산자로 조건식을 조합한다.
  • 쉽게 말하면 에 해당한다.

AND

조건식1 AND 조건식2
  • 0이 아니라는 조건은 a<>0과 같이 표현한다.
  • AND 연산은 조건을 만족하는 행을 집합으로 표현했을 때 이들 집합이 겹치는 부분, 즉 교집합으로 계산할 수 있다.
  • AND 연산자는 논리곱을 계산하는 논리 연산자이다.
AND로 조건식을 연결하면 모든 조건을 만족하는 행을 검색할 수 있다!

2. OR로 조합하기

  • 어느 쪽이든 하나만 참이 되면 조건식은 참이 된다라고 할 경우에는 OR로 조건식을 연결한다.
  • OR 또한 논리 연산자의 하나로 좌우 항목이 모두 필요한 이항 연산자이다.
  • AND와 달리 어느 쪽이든 조건을 만족하면 결과는 참이 된다.
  • 모든 조건이 거짓인 경우 결과는 거짓이 된다.
  • 즉, OR또는에 해당한다.

OR

조건식1 OR 조건식2
  • OR 연산은 조건을 만족하는 행을 집합으로 표현했을 때, 이 집합들을 합한 부분, 즉 합집합으로 계산할 수 있다.
  • OR 연산자는 논리합을 계산하는 논리 연산자이다.
OR로 조건식을 연결하면 어느 쪽이든 조건을 만족하는 행을 모두 검색할 수 있다!

3. AND와 OR를 사용할 경우 주의할 점

  • AND 연산자나 OR 연산자의 좌우로 참과 거짓을 반환하는 조건식을 지정하는 경우가 많다.
  • 열이나 상수만을 지정해도 에러가 발생하지는 않지만 기대한 결괏값을 얻을 수 없다.
  • 예를 들어 다음과 같은 조건식을 사용하면 올바른 결과를 얻을 수 없다.
SELECT * FROM sample24 WHERE no = 1 OR 2;
  • 상수 2는 논리 연산으로 항상 참이 되기 때문에 결과적으로 모든 행을 반환하게 된다.

올바른 조건식은 다음과 같다.

SELECT * FROM sample24 WHERE no = 1 OR no = 2;

AND와 OR를 조합해 사용하기

  • a<>0 AND b<>0이라는 조건식을 a=1 OR a=2 AND b=1 OR b=2로 변경해보면, a<>0 AND b<>0의 조건식 결과와는 다른 것을 알 수 있다.

연산자의 우선 순위

  • 결과가 다른 이유는 ANDOR의 계산 우선 순위가 다르기 때문이다.
  • OR 보다 AND 쪽이 우선 순위가 높기 때문에 a = 2 AND b = 1이 먼저 계산된다.
  • 즉, WHERE a=1 OR (a=2 AND b=1) OR b=2와 같다.
  • 따라서 조건식은 a=1, a=2 AND b=1, b=2의 3개로 나뉜다.
  • 그러므로 처음 원한 대로 조건을 지정하기 위해서는 괄호로 우선 순위를 변경하면 된다.
  • SELECT * FROM sample24 WHERE (a=1 OR a=2) AND (b=1 OR b=2);
  • 일반적으로 OR 조건식은 괄호로 묶어 지정하는 경우가 많다.
AND는 OR에 비해 우선 순위가 높다!

4. NOT으로 조합

NOT

NOT 조건식
  • NOT 연산자는 오른쪽에만 항목을 지정하는 단항 연산자이다.
  • 오른쪽에 지정한 조건식의 반대 값을 반환한다.
  • 만약 조건식이 참을 반환하면 NOT은 이에 반하는 거짓을 반환한다.
  • 주로 복수의 조건식에 대해 ~아닌, ~외에, ~를 제외한 나머지 등의 조건을 지정할 경우 사용한다.