같지 않음을 표현
SELECT title FROM books WHERE title NOT LIKE '%a%';
-- 제목에 a가 포함되지 않은 것을 선택
SELECT title FROM books WHERE CONCAT(author_fname, " ",author_lname) = "Dave Eggers" && released_year < 2010;
SELECT title, pages FROM books WHERE CHAR_LENGTH(title) > 30 && pages > 500;
비교 연산자를 이용하여 5와 20 사이 또는 하한 임계값과 상한 임계값 사이로 값을 좁힐 수 있음.
SELECT title FROM books WHERE released_year >= 2004 && released_year <= 2015
-- 아래처럼 표현도 가능함.
SELECT * FROM people WHERE birthtime
BETWEEN CAST('12:00:00' AS TIME)
AND CAST('16:00:00' AS TIME);
SELECT * FROM people WHERE birthtime
BETWEEN CAST('12:00:00' AS TIME)
AND CAST('16:00:00' AS TIME);
SELECT * FROM people WHERE HOUR(birthtime)
BETWEEN 12 AND 16;
IN 연산자
를 사용하기 전
SELECT title, author_lname FROM books WHERE author_lname = "Lahiri" || author_lname = "Carver";
IN 연산자
를 사용 후,
SELECT title, author_lname FROM books
WHERE author_lname = 'Carver'
OR author_lname = 'Lahiri'
OR author_lname = 'Smith';
SELECT title, author_lname FROM books
WHERE author_lname IN ('Carver', 'Lahiri', 'Smith');
SELECT title, author_lname FROM books
WHERE author_lname NOT IN ('Carver', 'Lahiri', 'Smith');
-- 번외 : 홀수년도의 책만 선택하여 조회
SELECT title, released_year FROM books WHERE released_year >= 2000 && released_year % 2 = 1;
IN 연산자
뒤에 괄호를 만들어 집합을 만들어준다.
NOT IN 연산자
를 사용하면, 기존과 반대되는 결과를 가져올 수 있다.
CASE
를 사용하여 값에 대한 결정을 내리고, 값에 따라 다른 결과를 얻을 수 있습니다.
발행년도에 따른 CASE문 작성
SELECT
title,
released_year,
CASE
WHEN released_year >= 2000 THEN 'Modern Lit'
ELSE '20th Century Lit'
END AS GENRE
FROM books ORDER BY GENRE;
재고량에 따른 CASE문 작성
SELECT title, stock_quantity,
CASE
WHEN stock_quantity BETWEEN 0 AND 50 THEN "*"
WHEN stock_quantity BETWEEN 51 AND 100 THEN "**"
ELSE '***'
END AS STOCK
FROM books;
위 구문을 비교 연산자로 아래처럼 축약 가능하다.
SELECT title, stock_quantity,
CASE
WHEN stock_quantity <= 50 THEN "*"
WHEN stock_quantity <= 100 THEN "**"
WHEN stock_quantity <= 200 THEN "***"
ELSE "****"
END AS stock
FROM books;
IS NULL
연산자를 사용하면 NULL
값을 선택할 수 있음.