자격증/SQLD

[SQL 첫걸음] 7강. 조건 조합하기

동호다찌 2022. 4. 4. 09:21
반응형

1. AND로 조합하기

SELECT * FROM 테이블명 WHERE 조건식1 AND 조건식2;
  • 복수의 조건을 조합할 경우 AND를 가장 많이 사용합니다. AND는 논리연산자의 하나로 좌우의 항목이 필요한 이항 연산자가 됩니다.
  • AND 연산은 조건을 만족하는 행을 집합으로 표현했을 때 이들 집합이 겹치는 부분, 즉 "교집합" 으로 계산할 수 있습니다. AND연산자는 논리곱을 계산하는 논리연산자입니다.
  • AND로 조건식을 연결하면 모든 조건을 만족하는 행을 검색할 수 있습니다.

2. OR로 조합하기

SELECT * FROM 테이블명 WHERE 조건식1 OR 조건식2;
  • 어느쪽이든 하나만 참이 되면 조건식은 참이 된다라고 할 경우에는 OR로 조건식을 연결합니다.
  • OR또한 논리연산자로 좌우 항목이 모두 필요한 이항연산자입니다.
  • OR는 조건식 2개 중 1개만 해당에도 결과값이 주어지면 "또는"으로 해당합니다.
  • OR연산은 조건을 만족하는 행을 집합으로 표현하면 "합집합"으로 계산할 수 있다.
  • OR로 조건식을 연결하면 어느쪽이든 조건을 만족하는 행을 검색할 수 있습니다.

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

  • 상수는 논리연산에서 항상 True이다.
mysql> SELECT * FROM sample24 WHERE no = 1 OR 2;
mysql> SELECT * FROM sample24 WHERE no = 1 OR no = 2;

첫번째 식을 보면 no가 1이거나 2인 행을 얻을 수 있을 것 같지만 그러기 위해서는 두번째 식을 사용해야 하며 첫번째 식에서는 OR 뒤의 2가 항상 참이 되므로 모든 행을 반환하게 된다.

  • AND의 우선순위가 OR의 우선순위보다 높다.
mysql> SELECT * FROM sample24 WHERE a <> 0 AND b <> 0;
mysql> SELECT * FROM sample24 WHERE a=1 OR a=2 AND b=1 OR b=2;
mysql> SELECT * FROM sample24 WHERE (a=1 OR a=2) AND (b=1 OR b=2);

‘a<>0 AND b<>0’이라는 식은 ‘a가 1 또는 2이고 b가 1 또는 2이다’와도 같은 뜻이 된다. 두번째 문장을 a=1 OR a=2 AND b=1 OR b=2 로 할 경우 결과는 다르게 나온다. 그 이유는 AND가 OR보다 우선순위가 높아 먼저 계산하게 되기 때문이다. a=2 AND b=1을 먼저 계산한 후, 그 결과를 OR로 a=1, b=2로 연결하여 계산하게 된다.

  • NOT 연산자는 조건식의 반대값을 반환한다.
mysql> SELECT * FROM sample24 WHERE NOT(a<>0 OR b<>0);
반응형