MySQL
Выбор данных из таблицы
Операторы фильтрации
Оператор SELECT
Оператор SELECT — один из самых важных операторов языка SQL, применяемый для выбора данных.
Он используется для извлечения записей из одной или нескольких таблиц в MySQL.
Синтаксис оператора SELECT:
SELECT * FROM имя_таблицы WHERE условие;
- где:
Обязательные ключевые слова:
SELECT - ВЫБРАТЬ
FROM - ИЗ
Необязательные ключевые слова: WHERE (ГДЕ), ORDER BY (ПОРЯДОК ПО) и другие.
За ключевым словом SELECT следуют сведения о том, какие именно поля необходимо включить в результирующий набор данных.
В ответ на такой запрос MySQL отправляет результат, который содержит все записи, соответствующие условию.
Знак * означает, что в записях, будут все поля, которые есть в таблице.
Иногда нужны не все поля, а только их часть. Тогда запрос выглядит так:
SELECT поле1, поле2, ... FROM имя_таблицы WHERE условие;
Ключевое слово FROM
Ключевое слово FROM (ИЗ) - служит для указания имен таблиц, из которых выбираются записи.
Оператор WHERE
Оператор WHERE (ГДЕ) - служит для фильтрации результатов, возвращаемых оператором SELECT (INSERT, UPDATE или DELETE).
Очень часто нужно произвести какие-то действия не со всей таблицей, а только с некоторыми записями.
Для этого и применяется ключевое слово WHERE, после которого пишется условие.
К тем записям, которые соответствуют условию, применяется действие.
Условия применяются к значениям полей.
Синтаксис предложения WHERE:
WHERE условие;
В условии мы можем использовать арифметические операторы, операторы сравнения и логические операторы.
Операторы сравнения:
< - Меньше
<= - Меньше или равно
<> - Не равно
!= - Не равно
= - Равно
<=> - Равно (безопасное сравнение значения NULL)
> - Больше
>= - Больше или равно
Специальные операторы сравнения :
ALL - применяется совместно с операторами сравнения при сравнении со списком значений.
ANY - применяется совместно с операторами сравнения при сравнении со списком значений.
BETWEEN - применяется при проверке нахождения значения внутри заданного интервала (включая его границы).
IN - применяется для проверки наличия значения в списке.
LIKE - применяется при проверке соответствия значения заданной маске.
EXISTS - ищет запись в таблице, которая соответствует заданным критериям.
IS NULL - сравнивает значение с NULL.
DISTINCT - проверяет каждую запись в таблице на уникальность.
Логические операторы:
AND - применяется для логических операций, связанных с требованием, чтобы запись удовлетворяла двум разным критериям.
OR - позволяет выбрать записи, удовлетворяющие хотя бы одному из перечисленных условий.
NOT - делает логический оператор противоположным. Например, NOT IN, NOT EXISTS и т.д.
Примеры синтаксиса оператора WHERE:
SELECT поле1, поле2, ... FROM имя_таблицы WHERE условие1 AND условие2;
SELECT поле1, поле2, ... FROM имя_таблицы WHERE условие1 OR условие 2;
SELECT поле1, поле2, ... FROM имя_таблицы WHERE условие1 IS NOT NULL ;
где:
- оператор AND ( логическое "И") применяется для логических операций, связанных с требованием, чтобы запись удовлетворяла двум разным критериям.
- оператор OR (логическое "ИЛИ") позволяет выбрать записи, удовлетворяющие хотя бы одному из перечисленных условий.
- оператор NOT используется для исключения из набора данных записей, удовлетворяющих данному условию - выражение "IS NOT NULL" означает, что соответствующая колонка результирующего набора данных не может содержать пустых значений.
В одном условии при необходимости можно объединять несколько логических операций.
Однако следует учитывать, что самой приоритетной операцией, которая выполняется в первую очередь, является NOT, менее приоритетная - AND и операция с наименьшим приоритетом - OR.
С помощью скобок можно переопределить приоритет операций.
Оператор BETWEEN
Не обязательно все условия должны относиться к одному полю. Можно применять их к разным полям.
Оператор BETWEENпозволяет установить диапазон значений какого-то поля.
Ко всем записям, которые попадают в этот диапазон, будет применён запрос:
WHERE имя_поля BETWEEN первое_значение_поля AND второе_значение_поля;
Оператор NOT
Также можно применить действие к записям, которые, наоборот, не попадают в установленный диапазон.
Для этого перед BETWEEN пишется Оператор NOT. Условие пишется так:
WHERE имя_поля NOT BETWEEN первое_значение_поля AND второе_значение_поля;
Оператор IN
Существует Оператор IN, который позволяет перечислить необходимые значения поля через запятую.
WHERE имя_поля IN (первое_значение_поля, второе_значение_поля, ... N-ное_значение_поля );
Оператор NOT, наоборот, позволяет выбрать все строки, столбцы которых не имеют определенных значений:
WHERE имя_поля NOT IN (первое_значение_поля, второе_значение_поля, ... N-ное_значение_поля );
Примеры запросов
Создадим таблицу workers (работники) в базе данных newDB. Далее работать будем с этой таблицей.

Оператор WHERE служит для фильтрации результатов:
Выбрать значения всех полей из таблицы "workers":
SELECT * FROM workers;
Получим: все данные на всех работников
Выбрать значения всех полей из таблицы "workers", где "id" = 2:
SELECT * FROM workers WHERE id = 2;
Получим: все данные на работника, у которого "id" = 2 (Петя Петькин)
Выбрать значение поля "id" из таблицы "workers", где значение поля "name" = 'Иван':
SELECT id FROM workers WHERE name = 'Иван';
Получим: ... [id] => 5 ...
Выбрать значение поля "name" из таблицы "workers", где "id" > 5:
SELECT name FROM workers WHERE id > 5;
Получим: ... [name] => Петр ... [name] => Сидор ...[name] => Антон ...
... [name] => Юра ... [name] => Максим )... [name] => Юра...[name] => Люся...
Выбрать значения полей "name", "surname", "age" из таблицы "workers", где значение поля "name" = 'Сидор' и значение поля "age" > 30:
SELECT name, surname, age FROM workers WHERE name = 'Сидор' AND age > 30;
Получим: ... [name] => Сидор [surname] => Сидоров [age] => 35 ...
Выбрать значения поля "name" из таблицы "workers", где значение поля "age" > 35 и значение поля "salary" > 20000 и значение поля "seniority" > 15:
SELECT name FROM workers WHERE age > 35 AND salary > 20000 AND seniority > 15;
Получим: ... [name] => Вася ... [name] => Иван ... [name] => Петр ...
Оператор BETWEEN позволяет установить диапазон значений какого-то поля:
Выбрать значение поля "name" из таблицы "workers", по установленному диапазон значений поля "id" (от 5 до 7):
SELECT name FROM workers WHERE id BETWEEN 5 AND 7;
Получим: ...[name] => Иван ... [name] => Петр ... [name] => Сидор ...
Также можно применить действие к записям, которые, наоборот, не попадают в установленный диапазон
Выбрать значение поля "name" из таблицы "workers", где значение поля "age" не попадает в установленный диапазон от 25 до 60:
SELECT name FROM workers WHERE age NOT BETWEEN 25 AND 60;
Получим: ... [name] => Максим ... [name] => Юра ...
Оператор IN позволяет перечислить значения поля через запятую:
Выбрать значение поля "name" из таблицы "workers", где поле "age" имеет значения - 30, 35, 40:
SELECT name FROM workers WHERE age IN (30, 35, 40);
Получим: ... [name] => Петя ... [name] => Саша )...[name] => Петр ... [name] => Сидор ...
Выбрать значение поля "name" из таблицы "workers", где поле "age" не имеет значения - 30, 35, 40:
SELECT name FROM workers WHERE NOT IN (30, 35, 40);
Получим: имена остальных работников
Наверх Наверх