WHERE и операторы сравнения

Учимся отбирать только нужные строки с помощью условия WHERE.

WHERE — это условие, которое оставляет в результате только строки, для которых оно истинно.

Простые сравнения

Условие в WHERE проверяется для каждой строки. Базовые операторы: = (равно), <> или != (не равно), <, >, <=, >=. Несколько условий объединяют через AND и OR.

CREATE TABLE products (
    id INTEGER PRIMARY KEY, name TEXT, price INTEGER, category TEXT
);

INSERT INTO products (name, price, category) VALUES
    ('Клавиатура', 2500, 'Периферия'),
    ('Мышь',       1200, 'Периферия'),
    ('Монитор',   18000, 'Экраны'),
    ('Коврик',      600, 'Аксессуары'),
    ('Наушники',   5000, 'Аудио');

SELECT name, price
FROM products
WHERE category = 'Периферия' AND price > 1500;

Вывод:

Клавиатура|2500

BETWEEN — диапазон

BETWEEN a AND b проверяет, что значение попадает в диапазон включительно. Это короче и понятнее, чем price >= a AND price <= b.

CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT, price INTEGER);

INSERT INTO products (name, price) VALUES
    ('Клавиатура', 2500), ('Мышь', 1200), ('Монитор', 18000),
    ('Коврик', 600), ('Наушники', 5000);

SELECT name, price
FROM products
WHERE price BETWEEN 1000 AND 6000
ORDER BY price;

Вывод:

Мышь|1200
Клавиатура|2500
Наушники|5000

IN — список значений

IN (...) проверяет, что значение есть в списке. Заменяет цепочку условий через OR.

CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT, category TEXT);

INSERT INTO products (name, category) VALUES
    ('Клавиатура', 'Периферия'), ('Монитор', 'Экраны'),
    ('Наушники', 'Аудио'), ('Коврик', 'Аксессуары');

SELECT name, category
FROM products
WHERE category IN ('Аудио', 'Экраны');

Вывод:

Монитор|Экраны
Наушники|Аудио

LIKE — поиск по шаблону

LIKE ищет строки по шаблону. Знак % заменяет любое число символов, _ — ровно один символ. В SQLite LIKE по умолчанию не различает регистр для латиницы.

CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT);

INSERT INTO products (name) VALUES
    ('Клавиатура'), ('Коврик'), ('Монитор'), ('Мышь');

-- названия, начинающиеся на «К»
SELECT name FROM products WHERE name LIKE 'К%';

Вывод:

Клавиатура
Коврик

Шаблон '%тор%' найдёт «Монитор» (подстрока в середине), а 'М___' — слова из четырёх символов на «М», например «Мышь».

Итог

  • WHERE оставляет строки, для которых условие истинно; условия объединяют AND/OR.
  • BETWEEN задаёт диапазон включительно, IN — список допустимых значений.
  • LIKE ищет по шаблону: % — любое число символов, _ — один символ.
Проверьте себя
1. Что проверяет условие price BETWEEN 1000 AND 6000?
Aprice > 1000 и price < 6000 (без границ)
Bprice >= 1000 и price <= 6000 (включая границы)
Cтолько price = 1000 или price = 6000
Dprice вне диапазона
2. Чем можно заменить условие category = 'A' OR category = 'B' OR category = 'C'?
Acategory LIKE 'ABC'
Bcategory IN ('A', 'B', 'C')
Ccategory BETWEEN 'A' AND 'C'
Dcategory = ('A','B','C')
3. Что означает символ % в шаблоне LIKE?
AРовно один любой символ
BЛюбое число любых символов (в т.ч. ноль)
CТолько цифры
DКонец строки
Поддержать проект