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

책을 많이 보면 볼 수록 익히는게 더 많아 진다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기