4장. 필터링
4.1 조건 평가
WHERE 절
- AND 또는 OR 연산자로 하나 이상의 조건을 포함
• AND: 모든 조건이 true
WHERE first_name = 'STEVE' AND create_date > '2006-01-01'
• OR: 조건 중 하나만 true이면, 해당 조건은 true
WHERE first_name = 'STEVE' OR create_date > '2006-01-01'
- 괄호 사용
• 여러 개의 조건을 포함하는 경우, 괄호를 써서 의도를 명확히 표현
WHERE (first_name = 'STEVE' OR last_name = 'YOUNG')
AND create_date > '2006-01-01
WHERE not (first_name = 'STEVE' OR last_name = 'YOUNG')
AND create_date > '2006-01-01'
»2006년 1월 1일 이후에 기록이 생성된 사람 중에
»이름이 STEVE이거나 성이 YOUNG이 아닌 행만 검색
WHERE first_name <> 'STEVE' AND last_name <> 'YOUNG'
AND create_date > '2006-01-01
4.2 조건 작성
조건 작성
- 하나 이상의 연산자와 결합된 표현식으로 구성
- 표현식
• 숫자
• 테이블 또는 뷰의 열
• 문자열
• concat()과 같은 내장 함수
• 서브 쿼리
• (‘Boston’, ’New YORk‘, ‘Chicago’)와 같은 표현식 목록
- 조건 연산자
• 비교 연산자: =, !=, <, >, <>, like, in, BETWEEN
• 산술 연산자: +, -, *, /
4.3 조건 유형
동등 조건(equality condition): ‘열 = 표현/값’
부등 조건(inequality condition): 두 표현이 동일하지 않음
범위 조건
- 해당 식이 특정 범위 내에 있는지 확인
• 해당 날짜만 검색: date(rental_date) = ‘2005-05-25’
범위 조건
- 2005년 6월 14일부터 6월 16일까지의 데이터를 출력하기 위해
• date(rental_date)를 사용: 정확한 날짜만 추출
BETWEEN 연산자
- BETWEEN [범위의 하한값] AND [범위의 상한값]
»하한값, 상한값의 위치가 바뀌면 결과 출력 없음
- 숫자 범위 사용
• 하한값과 상한값이 범위에 포함됨
문자열 범위
§last_name이 ‘FA’와 ‘FRB’로 시작하는 데이터 리턴
4.3.3 멤버십 조건
OR 또는 IN() 연산
IN() 연산
• 컬럼명 IN (값1, 값2, ...)
• 지정한 컬럼의 값이 특정 값에 해당되는 조건을 만들 때 사용 (OR 대신 사용)
서브 쿼리 사용
SELECT title, rating
FROM film
WHERE rating in (SELECT rating FROM film WHERE title like '%PET%');

• 서브 쿼리 내용
- ‘PET’을 포함하는 영화 제목을 찾고, 그 영화 제목의 rating을 반환 (‘P’, ‘PG’)
»‘PET%’: PET로 시작하는 어
»‘%PET’: PET로 끝나는 단어
»‘%PET%’: PET를 포함하는 단어
SELECT title, rating FROM film WHERE title like '%PET%';

• WHERE 절 내용
- WHERE rating in ('G', 'PG');
NOT IN 사용
- 표현식 집합 내에 존재하지 않음
• NOT IN(‘PG-13’, ‘R’, ‘NC-17’)- 영화 등급이 ‘PG-13’, ‘R’, ‘NC-17’이 아닌 모든 영화를 찾음
• NOT IN(‘PG-13’, ‘R’, ‘NC-17’)- 영화 등급이 ‘PG-13’, ‘R’, ‘NC-17’이 아닌 모든 영화를 찾음
4.3.4 일치 조건
문자열 부분 가져오기
-
left(문자열, n)
• 문자열의 가장 왼쪽부터 n개 가져옴

-
mid(문자열, 시작 위치, n),
• substr(문자, 시작 위치, n)도 동일한 기능 수행: 시작 위치는 1부터 시작

-
right(문자열, n)
• 문자열의 가장 오른쪽부터 n개 가져옴

와일드 카드
- ‘_’: 정확히 한 문자
- ‘%’: 개수에 상관없이 모든 문자 포함
일치 조건(matching condition)
정규 표현식 사용
- ‘^[QY]’: Q 또는 Y로 시작하는 단어 검색

Null값의 다양한 경우
- 해당 사항 없음
- 아직 알려지지 않은 값
- 정의되지 않은 값
Null 확인 방법
is not null
- 열에 값이 할당되어 있는 경우 (null이 아닌 경우)
Null과 조건 조합
- 2005년 5월에서 8월 사이에 반납되지 않은 대여 정보 검색
• 반납이 되지 않은 경우, 반납 날짜의 값이 NULL
• 또는 반납 날짜가 2005년 5월~ 2005년 8월 사이가 아닌 경우
