Introduction
이 장을 통해서 WHERE 조합 방법을 배운다. WHERE 조합은, AND, OR, NOT, IN 으로 한다. 이는 조합된 WHERE로 검색을 하여, 여러 조건에 맞아 떨어진 데이터를 검색할 때 사용 한다.
Content
1. AND 사용 방법
책에선 AND에 대한 사용법만 설명하고 있다. 프로그래밍을 했었다면, 본능적으로 AND가 갖는 의미를 알 수 있다. 바로 "여러 조건을 동시에 만족 할 때 참이다" 를 의미한다. 그러므로, 동시에 여러 조건을 만족하는 것만 보겠다는 의미를 갖는다.
이 의미는 vend_id 가 'DLL01' 이고 prod_price <= 4보다 큰 것만 선택하겠다는 의미이다. 결과는 그림과 같다.
2. OR 사용법
본능적으로 알 수 있듯이, 두 조건 중 하나라도 참일 경우 참으로 보겠다는 의미를 같는다.
이 의미는 vend_id 가 DLL01 이거나 BRS01 인 레코드만 선택하겠다는 의미이다. 결과는 다음과 같다.
주의 해야 할 점
AND 와 OR을 혼합 할 수 없을까? 당연히 있다. 하지만, 여기에서 주의 해야 할게 있는데, 평가순서 개념이다. 사칙연산에서 더하기와 곱하기 중 곱하기가 우선순위가 높은 것처럼 AND와 OR이 혼합 되었을 때, AND가 먼저 평가 된다. 그러므로 다음의 두 SQL 문은 다른 의미를 갖게 된다.
이 의미는 vend_id가 'BRS01' 이고 prod_price 가 10 이상인 것 이나 vend_id 가 'DLL01' 인 것들을 선택 하는 것이다. 결과는 다음과 같다.
위의 SQL 문과 () 친게 다른데, 이 의미는 vend_id 가 'DLL01' 이거나 'BRS01' 이고 이 중 prod_price 가 10 이상 인 것들을 선택 하는 것이다. 결과는 다음과 같다.
( ) 의 사용으로 평가순서가 바뀌였는데, ( ) 로 묶은 것이 제일큰 우선 순위를 갖으면, 괄호 안의 괄호 라면, 안쪽의 괄호가 더 큰 우선 순위를 간다. 또한 괄호와 괄호 중에는 왼쪽 괄호가 더 큰 우선순위를 간다. 말보다는 직접 테스트 해보면서 익히는게 빠를 것이다.
만약 복합 필터링을 해야 할 땐, 무조건 "()" 로 묶어 주는게 유리하다. 왜냐하면 더 보기가 수월해 지기 때문이다..(무조건이란 표현은, 내가 틀렸을 때, 지적을 받기 위함에 있다. 틀렸다면 틀렸다고 이유를 제시해야 할 것이다.). 덧붙이자면 개행을 써서 보기 좋게 만드는게 좋다.
3. IN 연산자의 사용
IN 연산자는 OR 과 똑같은 일을 한다. OR과 다른 점이 있다면. IN 연산자가 OR 연산자보다 실행 속도가 빠르다는 점, 하위 쿼리를 IN 연산자에 넣을 수 있다는 점 이 있다. 하위 쿼리는 나중에 다루기로 하고, 어떻게 사용하지는 알아 보자.
ORDER BY 는 무시하고, IN 만 설명 하면, IN 연산자 기준으로 왼편엔 체크할 열의 이름, 오른편엔 OR로 체크할 값들 이다. 각각의 값은 "," 로 이어 준다. 이 SQL의 실행 결과는 다음과 같다.
IN의 좋은 점으로는 OR로 여러개를 검사할 때, IN 하나만을 쓰면 되는 편함이다.
4. NOT 연산 사용법
!= 와 같은 연산이며, 값을 부정한 것이 참이라는 뜻으로, NOT으로 지정한것이 아닌 것들을 선택할 때 사용 한다.
이 의미는 vend_id가 DLL01 도 BRS01도 아닌 것들을 선택하는 것을 의미한다. 사용법은 NOT 다음에 부정시킬 열 그리고 연산 그리고 값이다. 말보단 그림 하나가 더 좋겠으니 그림을 보자.
NOT의 좋은 점으로는 IN 과 결합하기 쉽다는 것이다. 만약 IN을 != 로 바꾼다면, 노가다 작업(직접 다 해야 하는 점)을 해야만 한다.
Digression
책을 많이 보면 볼 수록 익히는게 더 많아 진다.
'책 정리 > 하루 10분씩 핵심만 골라 마스터하는 SQL' 카테고리의 다른 글
10장, 데이터 그룹화 : 테이터를 그룹화 한다는 것은 무슨 뜻인가? : GROUP BY (0) | 2010.01.30 |
---|---|
9장, 데이터 요약 : 테이블을 요약하는 방법 : COUNT(*) (0) | 2010.01.30 |
8장, 데이터 조작 함수 사용하기 : SQL에서 함수를 이용하기 (0) | 2010.01.29 |
7장, 계산 필드 만들기 : AS (0) | 2010.01.28 |
6장, 와일드카드를 사용한 필터링 : 문자열 패턴으로 필터링 하기 (0) | 2010.01.28 |
4장, 데이터 필터링 : WHERE 사용 법 (0) | 2010.01.22 |
3장, 가져온 데이터 정렬하기 : ORDER BY 사용법 (359) | 2010.01.22 |
2장, 데이터 가져오기 : 가장 쉬운 SELECT 사용법 (0) | 2010.01.22 |
1장, SQL의 이해 (0) | 2010.01.22 |
하루에 10분씩 핵심만 골라 마스터하는 SQL (0) | 2010.01.16 |
최근댓글