저자 : 아사이 아츠시
출판 : 한빛미디어
발매 : 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이 아닌 행)을 제외한 나머지 행 검색.
'Study > DB' 카테고리의 다른 글
[SQL 첫걸음] 3장.정렬과 연산 - 09.정렬(ORDER BY) (0) | 2018.08.28 |
---|---|
[SQL 첫걸음] 2장.테이블에서 데이터 검색 - 08.패턴 매칭에 의한 검색(LIKE) (0) | 2018.08.28 |
[SQL 첫걸음] 2장.테이블에서 데이터 검색 - 06.검색 조건 지정하기 (0) | 2018.08.28 |
[SQL 첫걸음] 2장.테이블에서 데이터 검색 - 05.테이블 구조 참조하기 (0) | 2018.08.28 |
[SQL 첫걸음] 2장.테이블에서 데이터 검색 - 04.Hello World 실행(+MySQL 설치 및 설정) (0) | 2018.08.28 |