데이터분석

[SQL] 기초 복습 - LIMIT, BETWEEN, IN, LIKE 와 ILIKE

리스보아 2023. 8. 19. 23:13
반응형

 

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;

 

 

반응형