Study/DB

[SQL 첫걸음] 2장.테이블에서 데이터 검색 - 07.조건 조합하기(AND,OR,NOT)

momo02 2018. 8. 28. 17:53
반응형

저자 : 아사이 아츠시

출판 : 한빛미디어 

발매 : 2015.11.01



1. AND로 조합하기 (모든 조건을 만족하는 행 검색)

- SELECT * FROM sample24 WHERE a<>0 AND b<>0;
: a열과 b열이 모두 0이 아닌 행 검색.
- 조건을 만족하는 행을 집합으로 표현했을 때, 이들 집합이 겹치는 부분, 즉 '교집합'에 해당


2. OR로 조합하기 (어느 쪽이든 조건을 만족하는 행 모두 검색)
- SELECT * FROM sample24 WHERE a<>0 OR b<>0;
: a열이 0이 아니거나 b열이 0이 아닌 행을 검색.
- 조건을 만족하는 행을 집합으로 표현했을 때, 이들 집합들을 합한 부분, 즉 '합집합'에 해당


3. AND와 OR를 사용할 경우 주의할 점
1) 
- SELECT * FROM sample24 WHERE no = 1 OR 2; (X)
: 상수 '2'는 논리 연산으로 항상 참이 되어 결과적으로 모든 행을 반환.
- SELECT * FROM sample24 WHERE no = 1 OR no = 2; (O)

2) 
AND와 OR를 조합해 사용할 경우.. AND가 OR에 비해 우선순위가 높다는 것을 주의할 것!

- SELECT * FROM sample24 WHERE a=1 OR a=2 AND b=1 OR b=2 
=> 의도한것은 a열이 1또는 2이고, b열이 1또는 2인 행을 검색  
그러나.. 
OR보다 AND쪽이 우선 순위가 높기 때문에 a =2 AND b = 1이 먼저 계산된다 
SELECT * FROM sample24 WHERE 
a=1 OR (a=2 AND b=1) OR b=2; (3개의 조건식이 OR로 연결된 것과 같아짐)

의도한대로 조건을 지정하기 위해선 다음과 같이 괄호로 우선 순위를 변경하면 됨.
SELECT * FROM sample24 WHERE (a=1 OR a=2) AND (b=1 OR b=2);


4. NOT으로 조합
- 오른쪽에만 항목을 지정하는 '단항 연산자'. 오른쪽에 지정한 조건식의 반대 값 반환.
주로 복수의 조건식에 대해 ~아닌,~외의,~를 제외한 나머지 등의 조건을 지정할 경우 사용. 

- SELECT * FROM sample24 WHERE NOT(a<>0 OR b<>0);
: (a열이 0이 아니거나 b열이 0이 아닌 행)을 제외한 나머지 행 검색. 

반응형