Выбор данных - SELECT. Операторы фильтрации

Выбор данных из таблицы
Операторы фильтрации




Оператор SELECT

Ключевое слово FROM

Оператор WHERE

Оператор BETWEEN

Оператор NOT

Оператор IN

Примеры запросов




Оператор 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. Далее работать будем с этой таблицей.


bd-8-1

Наверх



Оператор 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);

Получим: имена остальных работников







Наверх Наверх