본문 바로가기

Language/MySQL

[MySQL] 조건 조합하기

[SYNTAX]
조건식1 AND 조건식2
조건식1 OR 조건식2
NOT 조건식

 

AND로 조합하기

AND는 논리 연산자 중 하나로 좌우에 항목이 필요한 이항 연산자

'모든 조건을 만족하는 경우 조건식은 참이 된다'라고 할 때 AND 연산자로 조건식 조합

 

a열과 b열이 모두 0이 아닌 행을 검색한다.

 

 

 

OR로 조합하기

'어느 쪽이든 하나만 참이 되면 조건식은 참이 된다'고 할때 OR로 조건식 연결

AND와 달리 어느 쪽이든 조건을 만족하면 결과는 참이 된다.

 

a열이 0이 아니거나 b열이 0이 아닌 행을 검색한다

 

 

 

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

no열의 값이 1 또는 2인 행을 추출하고 싶을 경우

상수 '2'는 논리 연산으로 항상 참이 되기 때문에 결과적으로 모든 행을 반환하여 올바른 결과를 얻을 수 없다.

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

 

 

a열이 1 또는 2이고, b열이 1 또는 2인 행을 추출하고 싶을 경우

'a <> 0 AND b <> 0'이라는 조건식을 'a = 1 OR a = 2 AND b = 1 OR b = 2'로 변경했지만 결과는 다른 것을 볼 수 있다.

연산자의 우선순위가 AND가 OR보다 높기 때문에 다음과 같이 해석된다.

where a=1 or (a=2 and b=1) or b=2;

 

 

처음 원한대로 조건을 지정하기 위해서는 괄호로 순위를 변경해 주면 된다.

select * from sample24 where (a=1 or a=2) and (b=1 or b=2);

 

 

 

 

NOT으로 조합

NOT 연산자는 오른쪽에만 항목을 지정하는 '단항 연산자'이다.

오른쪽에 지정한 조건식의 반대 값을 반환한다. (조건식이 참이라면 NOT은 이에 반하여 거짓을 반환한다)

a열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행을 검색한다.

 

 


※ 한빛미디어의 'SQL첫걸음' 책을 보고 공부한 내용을 정리하고 있습니다.

'Language > MySQL' 카테고리의 다른 글

[MySQL] 정렬 - ORDER BY  (0) 2022.08.05
[MySQL] 패턴 매칭에 의한 검색  (0) 2022.08.05
[MySQL] 검색 조건 지정하기  (0) 2022.07.18
[MySQL] 테이블 구조 참조하기  (0) 2022.07.15
[MySQL] SELECT 명령  (0) 2022.07.15