[SQL] 기초 복습 - LIMIT, BETWEEN, IN, LIKE 와 ILIKE
SQL 공부를 시작했다!
이전에 조금 배웠던 건 있어서 기초 SQL부터 복습을 시작했다.
Udemy에서 기초를 다진 후에 데이터리안의 데이터분석 캠프 실전반을 수강할 계획이다.😀
일단 앞부분은 내가 이미 아는 내용들이라 가볍게 들었다.
SELECT, DISTINT, COUNT, WHERE 등등...
> LIMIT
어떤 데이터를 선택할 때 최상위의 데이터 갯수를 제한함
LIMIT을 1개로 제한해서 데이터의 구조를 보고 싶을 때도 많이 사용됨.
DVD rental 예제로 살펴보기!
> Q: 처음으로 결제를 한 고객 10명의 고객 ID는?
(ORDER BY + LIMIT)
> Q: 상영시간이 가장 짧은 영화 5편의 제목은?
이 쿼리에서 length는 굵은 글씨로 표시가 되는데,
SQL에 length라는 키워드가 이미 있기 때문.
동일한 키워드를 쓰지 않는 것을 권장함
> Q: 50분 이하의 영화를 본다면 몇 가지의 옵션이 있을까?
> BETWEEN
BETWEEN low AND high
low, high 값도 포함됨
NOT BETWEEN low AND high
low, high 값이 포함되지 않음
+ 날짜를 지정할 때에는 해당 날짜의 0:00 까지만 포함되는 것에 주의해야한다.
2월14일 까지를 포함시키고 싶으면 2월15일로 지정해야 14일 전체 데이터를 볼 수 있음.
> IN
여러개의 값 중 하나라도 포함된 결과를 보고 싶을 때
OR를 여러개 쓰기 보다는 IN을 활용!
WHERE color IN('red', 'blue', 'green')
혹은 그 값이 포함된 결과는 제외하고 보고싶다면 NOT IN을 쓰기.
WHERE color NOT IN('red', 'blue', 'green')
주의: IN을 사용하고자 하는 컬럼이 문자열이면 따옴표와 함께 입력해야 하고, 숫자이면 따옴표 없이 숫자만 입력!
> LIKE와 ILIKE
WHERE first_name = 'John'
위와 같은 조건절은 단어가 완전히 일치할 때 사용할 수 있다.
하지만 어떤 패턴을 만족시키는 값들을 찾고 싶다면? LIKE 사용!
ex)
'@gmail.com' 으로 끝나는 이메일 주소
'A'로 시작하는 이름
LIKE는 Wildcard 문자열을 활용해서 사용한다
1. '%' : 문자열의 갯수에 상관없이 매치
- WHERE name LIKE 'A%'
: A로 시작하는 어느 단어나 해당됨
- WHERE name LIKE '%a'
: a로 끝나는 어느 단어나 해당됨
2. '_' : 한개당 하나의 문자열에 매치
- WHERE value LIKE 'Version#__'
: 'Version#B7' 과 같이 뒤에 두 글자가 붙은 버전들을 가져올 수 있음
3. '%' 와 '_'을 조합해서 사용하기
- WHERE name LIKE '_her%'
: Cheryl, Theresa, Sherri ...
ILIKE과의 차이?
LIKE는 대소문자를 구분한다!
Ex)
customer 테이블에서 first_name 이 J로 시작하고, last_name이 S로 시작하는 사람들만 선택하기
SELECT * FROM customer
WHERE first_name LIKE 'J%' AND last_name LIKE 'S%';
대소문자를 신경쓰고 싶지 않다면 ILIKE 사용하기
SELECT * FROM customer
WHERE first_name ILIKE 'j%' AND last_name ILIKE 's%';
NOT 과도 함께 사용할 수 있음
- first_name이 A로 시작하면서 last_name이 B로 시작하지 않는 사람들만 선택하기
SELECT * FROM customer
WHERE first_name LIKE 'A%' AND last_name NOT LIKE 'B%'
ORDER BY last_name;