우선순위는 NOT, AND, OR입니다. and는 곱으로, or는 덧셈으로 이해하시면 계산이 쉽습니다. 뒤에서 나올 비교 연산자, WHERE 조건절
을 미리 사용하였습니다. 비교 연산자는 같다(=
), 다르다(!=
), 크다(>
), 작다(<
)를 표현하는 연산자입니다.
SELECT true AND true; -> true
SELECT true AND false; -> false
SELECT true OR false; -> true
SELECT false OR false; -> false
SELECT NOT true; -> false
SELECT NOT false; -> true
select * from users
where id < 10000
and first_name = 'cindy'
where 조건절 (and)
select * from users
where age < 20
or age > 60
where 조건절(or)
select * from users
where first_name = 'David'
and (age < 20 or age > 60)
where 조건절(and, or)
즉, 첫번째 이름이 'David'이면서 나이가 20보다 적거나 60보다 많은 user을 찾는 조건임을 알 수 있습니다.
select * from users
where NOT(country = 'United States')
where 조건절(not)
select * from users
where NOT(country = 'United States' or country = 'Brasil');
where 조건절(not)
select *
from users
where age between 20 and 30
select *
from users
where age>=20 and age<=30
1월 가입한 유저를 조회하고 싶은 경우
select *
from users
where created_at between '2020-01-01' and '2020-02-01'
주의!
아래와 같은 경우, 2020-01-01 00:00:00 부터 2020-01-31 00:00:00 사이를 조회하기 때문에 2020-01-31일의 값은 조회할 수 없습니다.
select *
from users
where created_at between '2020-01-01' and '2020-01-31'
select *
from products
where brand in ('Onia', 'Hurley', 'Matix');
%
는 와일드카드product의 name안에 Young
이 포함된 레코드를 조회합니다.
select *
from products
where name like '%Young%';
product의 name이 Hurley로 시작되는 레코드를 조회합니다.
select *
from products
where name like 'Hurley%';
product의 name이 T-shirt 로 끝나는 레코드를 조회합니다.
select *
from products
where name like '%T-shirt';
언더바는 한개의 글자를 포함합니다.
select distinct first_name
from users
where first_name like 'Da___'
언더바의 갯수가 3개이므로 Da로 시작하고 뒤에 3글자가 붙어서 총 5글자인 user 레코드를 조회합니다.
select *
from order_items
where shipped_at IS NULL;
select *
from order_items
where shipped_at IS NOT NULL;
참고!
NULL(빈 값) != 'NULL’(문자값) 서로 타입이 다르다→IS로 비교
SELECT ANIMAL_ID
from ANIMAL_INS
where NAME = 'NULL'
order by ANIMAL_ID ASC