Фильтрация строк с помощью WHERE
Запросите у таблицы только те строки, которые вам действительно нужны
WHERE - это проверка, которую вы задаёте. SQL применяет её к каждой строке и оставляет только те строки, которые прошли проверку.
- сравнивать значения с помощью
=,<>,<,>,<=,>=, - объединять проверки с помощью
AND,OR,NOTи управлять порядком с помощью скобок, - задавать диапазон с помощью
BETWEEN, - задавать короткий список с помощью
IN, - искать по текстовому шаблону с помощью
LIKEи подстановочных знаков%и_.
1. Что делает WHERE?
Представьте охранника на входе на праздник. Каждый гость подходит, охранник проверяет одно правило ("вы есть в списке?"), и внутрь проходят только те, кто прошёл проверку. WHERE - это такой охранник для ваших строк. Вы задаёте одно правило, SQL проверяет его для каждой строки, и возвращаются только те строки, для которых правило истинно.
С SELECT ... FROM ... вы познакомились в прошлой теме. WHERE - это новая строка, которую вы добавляете после FROM:
SELECT columns
FROM table
WHERE condition;
Прочитайте вслух: "Возьми эти столбцы из этой таблицы, но только те строки, где условие истинно".
2. Наша таблица-пример
Все запросы ниже работают с одной небольшой таблицей students. Вот как она создаётся, чтобы вы точно представляли, что внутри:
CREATE TABLE students (
id INT,
name VARCHAR(20),
age INT,
grade INT,
city VARCHAR(20),
score INT
);
INSERT INTO students VALUES
(1, 'Sara', 12, 7, 'London', 85),
(2, 'Omar', 13, 8, 'Paris', 60),
(3, 'Mia', 12, 7, 'London', 92),
(4, 'Leo', 14, 9, 'Berlin', 45),
(5, 'Nina', 13, 8, 'Paris', 78),
(6, 'Adam', 12, 7, 'Madrid', 88);
Это даёт нам такие шесть строк:
| id | name | age | grade | city | score |
|---|---|---|---|---|---|
| 1 | Sara | 12 | 7 | London | 85 |
| 2 | Omar | 13 | 8 | Paris | 60 |
| 3 | Mia | 12 | 7 | London | 92 |
| 4 | Leo | 14 | 9 | Berlin | 45 |
| 5 | Nina | 13 | 8 | Paris | 78 |
| 6 | Adam | 12 | 7 | Madrid | 88 |
Держите эту таблицу в голове. Для каждого запроса мы будем задавать вопрос, и вы сами сможете проверить ответ по этим строкам.