Бесплатная миграция IT-инфраструктуры в облако

SQL-выражения: как использовать, примеры

Илья Ушаков
Илья Ушаков
Технический писатель
10 февраля 2023 г.
1361
7 минут чтения
Средний рейтинг статьи: 5

SQL-выражения — это некий набор значений, операторов, имен столбцов, функций или других составляющих, имеющихся в SQL. Они представляют собой формулы и предназначены для получения некоторого набора данных.

В этой статье разберем три основных типа выражений в SQL. Это логические и числовые выражения, а также те, которые относятся к дате и времени. Все перечисленные типы уникальны и используются для достижения конкретных целей, примеры которых мы также приведем в статье.

Логические SQL-выражения

Логические выражения в 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-выражения

Числовые выражения в 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

Что запомнить

  • 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-выражения помогут пользователю правильно составлять запросы и получать необходимые данные для дальнейшей их обработки.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
10 февраля 2023 г.
1361
7 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев