Learning SQL 4장 요약 - 필터링
SQL
2022. 11. 24. 17:00
4장 필터링
4장에서는 select, updae, delete 문의
where 절에서 사용할 수 있는 다양한 필터조건을 설명한다.
조건 유형
동등조건(=)
WHERE date(r.rental_date) = '2005-06-14';
부등조건(!= 또는 <>)
WHERE date(r.rental_date) <> '2005-06-14';
not 연산자를 사용할 수도 있으나 이해하기엔 어렵다.
범위조건 (>, <, >=, <=, between)
where rental_date < '2005-05-25';
between 연산자
날짜 예)
WHERE rental_date BETWEEN '2005-06-14' AND '2005-06-16';
※ 유의할 점은, 시간의 구성요소를 따로 지정하지 않으면,
시간은 기본적으로 자정으로 구성되므로
2005-06-14 00:00:00부터 2005-06-16 00:00:00까지이다.
여기엔 사실상 14일, 15일자만 포함되는 것이다.
숫자 예)
WHERE amount BETWEEN 10.0 AND 11.99;
위와 같은 예제에선 10.0과 11.99가 포함된 결과셋을 반환한다.
문자열 예)
WHERE last_name BETWEEN 'FA' AND 'FR';
FRANKLIN같은 경우는 FR을 벗어난다.
이런 경우 FRB와 같이 지정해주면 된다.
집합조건 (책에서는 멤버십조건으로 표기)
or을 여러 번 병기하는 것보다 in 연산자를 이용하는 것이 낫다.
WHERE rating IN ('G', 'PG');
서브쿼리를 사용하여 집합을 생성할 수도 있다.
SELECT title, rating
FROM film
WHERE rating IN (SELECT rating FROM film WHERE title LIKE '%PET%');
존재하지 않는지를 확인하려면 not in 연산자를 사용하면 된다.
WHERE rating NOT IN ('PG-13', 'R', 'NC-17');
일치조건
와일드카드 사용
와일드카드 문자 | 일치 |
_ | 정확히 문자 하나 |
% | 개수 상관없이 모든 문자 (문자가 없어도 됨) |
WHERE last_name LIKE '_A_T%S';
Null
is null
WHERE return_date IS NULL;
return_date = NULL로 적으면 Empty Set만 반환한다.
is not null - 값이 할당되어 있는지 확인
WHERE return_date IS NOT NULL;
null의 함정
값이 할당되어 있지 않은 데이터를 놓칠 수가 있다.
예를 들어, 5월에서 8월 사이에 반납되지 않은 데이터를 찾는다고 할 경우,
다음과 같이 null 데이터도 찾을 수 있어야 한다.
SELECT rental_id, customer_id, return_date
FROM rental
WHERE return_date IS NULL
OR return_date NOT BETWEEN '2005-05-01' AND '2005-09-01';
'SQL' 카테고리의 다른 글
Learning SQL 7장 요약 - 데이터 생성, 조작과 변환 (0) | 2022.11.27 |
---|---|
Learning SQL 6장 요약 - 집합 연산자 (0) | 2022.11.24 |
Learning SQL 5장 요약 - 다중 테이블 쿼리 (0) | 2022.11.24 |
Learning SQL 3장 요약 - 쿼리 입문 (0) | 2022.11.24 |
Learning SQL 2장 요약 - 데이터베이스 생성과 데이터 추가 (0) | 2022.11.24 |