Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Логические выражения в SQL используются для извлечения необходимых данных, основанных на условии, которое зачастую указывается в операторе WHERE. Запросы с таким видом выражений могут начинаться с таких операторов, как SELECT, UPDATE, DELETE или INSERT.
Также с WHERE могут использоваться операторы GROUP BY, HAVING и ORDER BY. Они предназначены для фильтрации, сортировки и ограничений получаемых в запросе строк. Более подробно с ними можно ознакомиться в статье в нашем блоге.
Синтаксис применения логических выражений выглядит так:
SELECT наименование_столбца1, наименование_столбца2, наименование_столбца3, …, наименование_столбцаN
FROM наименование_таблицы
WHERE логическое_выражение;В качестве примера возьмем таблицу «Staff», содержащую данные о работниках некоторой компании. Она будет состоять из следующих столбцов:
- ID – уникальный идентификатор сотрудника.
- FirstName – имя сотрудника.
- SecondName – фамилия сотрудника.
- Post – должность сотрудника.
- Wages – заработная плата сотрудника.
Итоговая таблица представлена ниже:
| ID | FirstName | SecondName | Post | Wages |
|---|---|---|---|---|
| 1 | Alexander | Avdeev | Manager | 45000 |
| 2 | Anatoliy | Andreev | Junior QA specialist | 30000 |
| 3 | Victoria | Davydova | Manager | 35000 |
| 4 | Igor | Konchalovskiy | Main Developer | 90000 |
| 5 | Alexanderа | Medvedeva | Senior QA specialist | 65000 |
| 6 | Andrey | Grushevskiy | Analyst | 40000 |
Теперь составим запрос к данной таблице, применив логическое выражение:
SELECT * FROM Staff WHERE Post = Manager;Данный запрос должен предоставить все данные о сотрудниках, которые работают в компании в качестве менеджера.
Результат запроса будет таким:
| ID | FirstName | SecondName | Post | Wages |
|---|---|---|---|---|
| 1 | Alexander | Avdeev | Manager | 45000 |
| 3 | Victoria | Davydova | Manager | 35000 |
Как видно из таблицы, в результат были внесены только те данные, которые удовлетворяют условию в WHERE.
В операторе WHERE возможно использовать операторы AND, OR, XOR или NOT для того, чтобы организовать более сложное логическое выражение.
Например, в описанной выше таблице запросим только те данные сотрудников, кто получает заработную плату больше 40000, но меньше 70000. Также отсортируем полученные данные в порядке убывания по столбцу «Wages». Для этого используем следующее логическое выражение в SQL-запросе:
SELECT * FROM Staff
WHERE Wages > 40000 and Wages < 70000
ORDER BY Wages DESC;| ID | FirstName | SecondName | Post | Wages |
|---|---|---|---|---|
| 5 | Alexanderа | Medvedeva | Senior QA specialist | 65000 |
| 1 | Alexander | Avdeev | Manager | 45000 |
Числовые выражения в SQL применяются для реализации математических операций. Зачастую их используют для составления отчетности. Формируются они с использованием некоторых агрегатных функций. Среди них: MIN, MAX, COUNT, COUNT_BIG, AVG, SUM и другие. Кроме перечисленных агрегатных функций возможно использовать операторы сложения, вычитания, деления или умножения.
Синтаксис выглядит следующим образом:
SELECT числовое_выражение
FROM наименование_таблицы
[WHERE условие];В качестве примера снова возьмем таблицу «Staff», которая была представлена в прошлом абзаце, и составим выражение в SQL-запросе:
SELECT count(*) FROM Staff;Данный запрос вернет количество строк таблицы «Staff». Оно будет равно 6.
Теперь усложним математическое выражение и вернем среднюю заработную плату сотрудников, занимающих должность менеджера в компании. Для этого составим следующий запрос:
SELECT avg(Wages) FROM Staff WHERE Post = Manager;В результате получим 40000.
SQL-выражения даты и времени
Теперь рассмотрим выражения, предназначенные для получения и последующей работы с текущими временем и датой.
SELECT CURRENT_TIMESTAMP;Этот запрос вернет текущие дату и время. CURRENT_TIMESTAMP — это и есть SQL-выражение даты и времени, однако это также является и функцией одновременно.
Чтобы вернуть только текущее время, нужно использовать CURRENT_TIME, а чтобы получить только текущую дату — CURRENT_DATE.
Также в SQL имеется набор функций, предназначенных для разбиения даты и времени на отдельные части. В таблице ниже приведем их наименования, примеры использования и результаты запросов.
Результат SELECT CURRENT_TIMESTAMP для примеров равен 2023-02-03 08:25:39.
| Функция | Аргумент функции | Что возвращает | Пример |
|---|---|---|---|
DAYOFWEEK() | Date | День недели | SELECT DAYOFWEEK(CURRENT_TIMESTAMP); Result: 6 (Пятница) |
DAYOFMONTH() | День месяца | SELECT DAYOFMONTH(CURRENT_TIMESTAMP); Result: 3 | |
DAYOFYEAR() | День года | SELECT DAYOFYEAR(CURRENT_TIMESTAMP); Result: 34 | |
LAST_DAY() | Последний день месяца | SELECT LAST_DAY(CURRENT_TIMESTAMP); Result: 2023-02-28 | |
MONTH() | Месяц | SELECT MONTH(CURRENT_TIMESTAMP); Result: 2 | |
YEAR() | Год | SELECT YEAR(CURRENT_TIMESTAMP); Result: 2023 | |
HOUR() | Time | Час | SELECT HOUR(CURRENT_TIMESTAMP); Result: 8 |
MINUTE() | Минуты | SELECT MINUTE(CURRENT_TIMESTAMP); Result: 25 | |
SECOND() | Секунды | SELECT SECOND(CURRENT_TIMESTAMP); Result: 39 |
Кроме перечисленных выше, существуют функции, рассчитанные на обработку полученных временных данных. Их наименования, описание и примеры будут представлены ниже в таблице. Для примеров взято то же значение CURRENT_TIMESTAMP, что и раньше.
| Функция | Описание | Примеры |
|---|---|---|
DATE_ADD(дата, временной интервал) | Предназначена для сложения даты и некоторого временного промежутка | SELECT DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 1 MONTH); Result: 2023-03-03 08:25:39 |
DATE_SUB(дата, временной интервал) | Предназначена для вычитания из даты некоторого временного промежутка | SELECT DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 MONTH); Result: 2023-01-03 08:25:39 |
DATEDIFF(дата1, дата2) | Рассчитывает разницу в днях между двумя указанными датами | SELECT DATEDIFF(CURRENT_DATE, '2022-02-01'); Result: 367 |
TO_DAYS(дата) | Преобразует дату в количество дней, начиная с нулевого года | SELECT TO_DAYS(CURRENT_TIMESTAMP); Result: 738919 |
TIME_TO_SEC(время) | Рассчитывает количество секунд в указанном времени | SELECT TIME_TO_SEC(CURRENT_TIME); Result: 30 339 |
Предназначена для сложения даты и некоторого временного промежутка
Result: 2023-03-03 08:25:39
Предназначена для вычитания из даты некоторого временного промежутка
Result: 2023-01-03 08:25:39
Рассчитывает разницу в днях между двумя указанными датами
Преобразует дату в количество дней, начиная с нулевого года
Рассчитывает количество секунд в указанном времени
- SQL-выражения — это некий набор значений, операторов, имен столбцов, функций или других составляющих, имеющихся в SQL.
- Существует 3 основных типа SQL-выражений: логические, числовые, а также те, что относятся к дате и времени.
- Логические выражения в SQL используются для извлечения необходимых данных, основанных на условии, которое зачастую указывается в операторе
WHERE. Синтаксис:
SELECT наименование_столбца1, наименование_столбца2, наименование_столбца3, …, наименование_столбцаN
FROM наименование_таблицы
WHERE логическое_выражение;- Также с
WHEREмогут использоваться операторыGROUP BY,HAVINGиORDER BY. Они предназначены для фильтрации, сортировки и ограничений получаемых в запросе строк. - Числовые выражения в SQL применяются для реализации необходимых математических операций. Синтаксис:
SELECT числовое_выражение
FROM наименование_таблицы
[WHERE условие];- Последний рассмотренный тип SQL-выражений — выражения, предназначенные для работы с текущими временем и датой.
Разверните базу данных в облаке
Мы рассмотрели выражения в SQL и три основных типа данных конструкций: логические, числовые, а также те, что относятся к дате и времени. Для каждого типа мы для наглядности привели примеры. SQL-выражения помогут пользователю правильно составлять запросы и получать необходимые данные для дальнейшей их обработки.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.