TIL # 110 : [SQL] More Commands : Row Filtering in SQL

셀레스틴 허·2021년 3월 25일
0
post-thumbnail

WHERE

  • WHERE 구문 뒤에 나오는 조건이 true인 값들만 돌려준다
SELECT calories
FROM products
WHERE calories < 300;

✅ 날짜도 논리연산자 적용 가능

LIKE

  • WHERE 구문과 함께 쓰인다

  • 비슷한 값들을 비교하고 싶을 때 유용하다

  • column에 있는 특정한 pattern을 찾고싶을 때 사용한다

  • like와 함께 쓸 수 있는 기호:

    • % : 뒤에 또는 앞에 있는 경우에 따라 해당 조건과 맞는 0개 또는 여러개의 문자와 일치하는 값들을 돌려준다
      예) A%인 경우 : Awesome, Abstract, etc.
      예) %a인 경우 : Insomina, Oceania etc.
      예) %man%인 경우 : Batman, Man in Black, etc,
    • _ :패턴이 흐트러지지 않는한 어떠한 문자도 들어올 수 있다
      예) 손_준인 경우 : 손호준, 손홍준, 손훙준 다 필터링돼서 들어온다

IS NULL

  • IS NULL
  • IS NOT NULL
  • WHERE와 함께 쓰인다
SELECT name
FROM products
WHERE description IS NOT NULL;

BETWEEN

  • 특정 range에서의 값을 뽑기 위해 WHERE와 함께 쓰인다
  • number, date, text를 필터할 수 있음
SELECT *
FROM products
WHERE price BETWEEN 5000 AND 9000;
-> 9000원이하! 9000원은 포함된다

SELECT *
FROM products
WHERE name BETWEEN 'A' AND 'L';
-> 이름이 딱 'L'인 제품까지만 포함된다. 'Lime Fizzio'는 안된다.

AND

  • WHERE 구문에서 여러 조건을 함께 명시하고 싶을 때 쓴다
  • 명시한 조건이 모두 true이어야 한다
# 1
SELECT name, price
FROM products
WHERE price BETWEEN 5000 AND 9000
   AND category = 'espresso';

# 2
SELECT * 
FROM products
WHERE price < 5000
  AND category = 'espresso';

첫번째 예제
1. 가격이 5000-9000원 사이이며
2. 에스프레소 카테고리 안에 있어야 한다

두번째 예제
1. 가격이 5000보다 적어야 하며
2. 에스프레소 카테고리 안에 있어야 한다

OR

  • AND 구문처럼 WHERE 구문에서 여러 조건을 함께 명시하고 싶을 때 쓴다
  • 그러나 AND와의 가장 큰 차이점을 바로 제시한 조건 중 한가지라도 true 불러와진다는 것이다
# 1
SELECT name, price
FROM products
WHERE price BETWEEN 5000 AND 9000
   OR category = 'espresso';

# 2
SELECT * 
FROM products
WHERE price < 5000
  OR category = 'espresso';

첫번째 예제
1. 가격이 5000-9000원 사이이거나
2. 에스프레소 카테고리 안에 있어야 한다

두번째 예제
1. 가격이 5000보다 적거나
2. 에스프레소 카테고리 안에 있어야 한다

ORDER BY

  • 특정 column을 알파벳 순서 또는 numeric 순서로 결과를 sort할 수 있다.
  • DESC : descending order (Z-A, high-low)
  • ASC : ascending order (A-Z, low-high)
  • WHERE 구문이 있다면 WHERE 뒤에 붙는다
SELECT name, price
FROM products
WHERE price > 5000
ORDER BY calories DESC;

LIMIT

  • row의 최대 개수를 설정할 수 있다
- 가장 비싼 음료 5SELECT *
FROM products
ORDER BY price DESC
LIMIT 5; 

CASE

  • if-then logic
  • SELECT 구문과 함께 쓰이며 다른 output을 설정할 수 있다
SELECT name,
 CASE
  WHEN calories > 500 THEN 'Bad for your health'
  WHEN calories > 300 THEN 'A little heavy'
  ELSE 'Just Right!'
 END
FROM products;
  1. WHEN 구문이 조건을 테스트하고 조건이 true일 경우 THEN 뒤에 나오는 스트링을 출력한다
  2. 조건이 모두 false일 경우 ELSE 구문 뒤에 나오는 스트링이 출력된다
  3. 꼭 END로 CASE문을 닫아야 한다
  4. END AS으로 column이름을 바꿀 수 있다
profile
Software Developer / 고통은 필연, 괴로움은 선택

0개의 댓글