3.9 KiB
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의 조건식 결과와는 다른 것을 알 수 있다.
연산자의 우선 순위
- 결과가 다른 이유는
AND와OR의 계산 우선 순위가 다르기 때문이다. 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은 이에 반하는 거짓을 반환한다. - 주로 복수의 조건식에 대해
~아닌,~외에,~를 제외한 나머지등의 조건을 지정할 경우 사용한다.