Типы SQL-запросов к базам данных: шпаргалка по написанию и составлению

Казалось бы, старая 50-летняя технология в эпоху нейросетей утратила актуальность, но не SQL. Её востребованность только растёт, на что указывает упоминание в 16 000 вакансий на hh.ru, ведь большая доля информации вся информация, за исключением мультимедиа, хранится в базах данных. Для обращения к ним используют SQL-запросы – команды, которые позволяют считывать, добавлять, удалять, редактировать, фильтровать и сортировать информацию. В статье рассмотрим основные типы SQL-запросов, их особенности и примеры применения, она станет своего рода шпаргалкой для новичков и тех, кто забыл. А попрактиковаться в написании запросов можно при помощи интерактивных тренажёров SQL.

SQL-запросы к базам данных: руководство по написанию и шпаргалка для новичков

Типы запросов в зависимости от функционального назначения

Общепринятая классификация, в которой легко ориентируются даже новички.

Data Definition Language (DDL) – определение данных

Тип включает команды создания и изменения структуры базы данных: таблиц, индексов и иных объектов.

Data Manipulation Language (DML) – манипуляции с данными

Запросы для обработки содержимого таблиц. Они делают выборку, добавляют, изменяют записи. Результаты их отправки можно откатить с помощью транзакций.

Data Control Language (DCL) – запросы управления доступом.

Команды для обеспечения безопасности или управления правами пользователей. Позволяют указывать, может читать, изменять или администрировать данные. Применяются администраторами баз данных, тестировщиками, специалистами по безопасности. 

Transaction Control Language (TCL) – запросы управления транзакциями

TCL предлагает команды для управления транзакциями – логическими единицами работы с базой данных. Их задача — контроль целостности информации. Используются администраторами БД, системными архитекторами, DevOps-специалистами.

Data Query Language (DQL)

Категория содержит единственную команду – SELECT. Её выделяют отдельно из-за гибкости, и востребованности – на неё приходится свыше 80% всех запросов.

Типы SQL-запросов к базам данных: шпаргалка по написанию и составлению

Таблица сотрудников

Пример того, как работают TCL-запросы

—Отобразит всю таблицу целиком

SELECT * FROM employees;

—Только фамилию, имя и почту

SELECT first_name, last_name, email FROM employees;

Типы SQL-запросов к базам данных: шпаргалка по написанию и составлению

  Исходные данные

Таблица с клиентами для демонстрации работы запросов типа DQL

—Сотрудники с доходом свыше 50 000 с отдела IT

SELECT * FROM employees WHERE department = ‘IT’ AND salary > 50000;

Типы SQL-запросов к базам данных: шпаргалка по написанию и составлению

Результат выполнения запросы SELECT

Команда подтянула информацию с другой таблички без их изменения 

Технически DQL относят к DML, но часто её выделяют в отдельную категорию.

Классификация запросов по числу таблиц

Запросы делят по количеству задействованных таблиц.

Типы подзапросов

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

Подзапросы или вложенные SELECT-запросы. Бывают двух типов.

Классификация запросов в зависимости от типа операций

Существует формальная классификация, которая помогает новичкам ориентироваться в разнообразии команд SQL, но часть функций в ней пересекается — могут относиться к двум категориям.

КатегорияТип запроса / функцииПримеры Описание
ОсновныеSELECTSELECT name, age FROM usersВыбор данных из таблицы
INSERTINSERT INTO users (name, age) VALUES (‘Иван’, 30)Добавление новых записей
UPDATEUPDATE users SET age=31 WHERE name=’Иван’Обновление записей
DELETEDELETE FROM users WHERE age > 100Удаление записей
СтроковыеUPPER()SELECT UPPER(name) FROM usersПреобразование в верхний регистр
LOWER()SELECT LOWER(email) FROM contactsПреобразование в нижний регистр
CONCAT()SELECT CONCAT(first_name, ‘ ‘, last_name) FROM employeesОбъединение строк
SUBSTRING()SELECT SUBSTRING(phone, 1, 3) FROM clientsИзвлечение части строки
TRIM()SELECT TRIM(address) FROM locationsУдаление пробелов с обеих сторон
Дата/времяNOW()SELECT NOW() AS current_datetimeТекущая дата и время
CURDATE()SELECT CURDATE() AS todayТекущая дата
CURTIME()SELECT CURTIME() AS current_timeТекущее время
YEAR()SELECT YEAR(birth_date) FROM personsИзвлечение года из даты
MONTH()SELECT MONTH(created_at) FROM ordersИзвлечение месяца (1-12)
DAY()SELECT DAY(delivery_date) FROM shipmentsИзвлечение дня месяца
DATE_FORMAT()SELECT DATE_FORMAT(date, ‘%d.%m.%Y’) FROM eventsФорматирование даты
DATEDIFF()SELECT DATEDIFF(end_date, start_date) FROM projectsРазница между датами в днях
Агрегатные функцииCOUNT()SELECT COUNT(*) FROM usersПодсчёт количества строк
SUM()SELECT SUM(salary) FROM employeesСумма значений
AVG()SELECT AVG(price) FROM productsСреднее значение
СоединенияJOINSELECT u.name, o.date FROM users u JOIN orders o ON u.id=o.user_idОбъединение таблиц
ЛогическиеBOOLEAN (BOOL, BIT)CREATE TABLE users (is_active BOOLEAN);Хранения статуса, состояния: TRUE или лжи FALSE)
БинарныеBLOB, BINARY, VARBINARYCREATE TABLE docs (file_content BLOB);Хранение «сырых» двоичных данных: изображений, файлов, паролей

Для облегчения ориентации SQL-запросах их делят в соответствие с совершаемыми типами операций.

FAQ (Часто задаваемые вопросы)

Что такое запрос в SQL?

Запросом называют инструкцию СУБД, где описан, что нужно сделать. Она состоит из одной строчки, хотя сложные длинные команды могут записывать в несколько строк для удобства чтения кода.

Команду на отображение имён пользователей с таблицы users, которым 30+ лет с сортировкой по имени в алфавитном порядке, можно записать двумя способами:

SELECT name, age FROM users WHERE age > 30 ORDER BY name;

или

SELECT name, age

FROM users

WHERE age > 30

ORDER BY name;

А теперь представьте более сложную инструкцию, записанную в одну строчку.

SELECT u.name, COUNT(o.id) AS orders

FROM users u

JOIN orders o ON u.id = o.user_id

WHERE o.status = ‘completed’

GROUP BY u.name

HAVING COUNT(o.id) > 5

ORDER BY orders DESC;

Из чего состоят SQL-запросы:

  • Ключевые слова — зарезервированные команды SQL (SELECT, FROM, WHERE и т.д.) 
  • Идентификаторы — имена таблиц, колонок, схем.
  • Литералы — конкретные значения (строки, числа, даты).
  • Операторы — символы для сравнения, арифметические и логические действия.
  • Разделители — запятые, скобки, точки с запятой.

Базовый SQL-запрос может включать до 7 клауз или предложений – ключевых структур запроса:

  1. SELECT [модификаторы] список_колонок – ключевое слово для выбора столбцов.
  2. FROM источник_данных – указывает, с какой таблицей или источником данных работать.
  3. [WHERE условия_фильтрации] – фильтрует строки по указанным условиям.
  4. [GROUP BY колонки_группировки] – группирует данные по указанным столбцам.
  5. [HAVING условия_для_групп] – применяет условия к уже сгруппированным данным.
  6. [ORDER BY колонки_сортировки] – сортирует результат по возрастанию или убыванию.
  7. [LIMIT число_записей] – ограничивает количество выводимых строк.

Важно: первые две команды — SELECT и FROM — обязательны. Остальные используются при необходимости.

Пример: вывод имён 5 пользователей с наибольшим числом завершённых заказов, у которых заказов больше двух.

SELECT name, COUNT(o.id) AS orders        выбор столбцов и подсчет заказов
FROM users u                               таблица пользователей
JOIN orders o ON u.id = o.user_id          соединение с заказами
WHERE o.status = ‘completed’               фильтрация по статусу
GROUP BY name                              группировка по имени
HAVING COUNT(o.id) > 2                     только пользователи с >2 заказами
ORDER BY orders DESC                        сортировка по количеству заказов
LIMIT 5;               вывести первые 5 записей

SQL позволяет работать с информацией в базах данных: читать, добавлять, изменять, удалять, группировать, фильтровать и управлять правами доступа. Все запросы делятся на четыре группы: DDL отвечает за создание и изменение структуры базы, DML — за работу с содержимым таблиц, DCL управляет правами пользователей, а TCL обеспечивает контроль транзакций. Их изучение эффективно только через практику, для чего созданы интерактивные SQL-тренажеры. Освоив базовые команды и принципы работы, вы сможете податься в десятки профессий или повысите свою ценность на рынке труда.

Максим Корень
Максим Корень

Контент-менеджер, копирайтер с увлечениями и образованием в сфере IT. Года с 2016 пишу SEO-оптимизированные статьи преимущественно на тему электроники, высоких технологий и программного обеспечения. Имею опыт в создании, наполнении контентом и продвижении сайтов, монтаже видео, программировании, модостроении.

Мы будем рады услышать ваши мысли

ОСТАВИТЬ ОТВЕТ

Реклама. Информация о рекламодателе по ссылкам в статье.
eddu.pro
Logo
Зарегистрировать новый аккаунт