В блог
Операторы SQL: основные группы и примеры использования - IT Resume

Операторы SQL: основные группы и примеры использования

Дата последнего обновления: 16.03.2025
Дата размещения: 14.03.2025
Евгений Буторин

Введение

Работа с SQL, наверное, является ключевым навыком для аналитика в текущее время. Каждая компания сейчас имеет огромное количество данных, которые необходимо привести в презентабельный внешний вид. Да, по-прежнему можно встретить компании, которые работают только в Excel или Access, и имеют успешный бизнес, но это не значит они эффективно используют имеющиеся данные и ресурсы.
В этой статье мы рассмотрим, что такое SQL, где он применяется, и подробно разберем операторы SQL, их группы и примеры использования.

Что такое SQL

SQL (Structured Query Language) — это язык структурированных запросов, предназначенный для работы с реляционными базами данных.

Пионерам в области SQL можно считать команду компании IBM, которые не только разработали реляционную модель данных, но создали первый протопит языка, назвав его SEQEL. Чуть позже – в 1979 году компания Oracle значительно ускорила развитие и популярность SQL, выпустив первую коммерческую версию. Первый международный стандарт SQL был принят в 1986 году, с тех пор стандарты постоянно обновляются, делая язык еще более удобным и функциональным. Например, оконные функции появились только в стандарте SQL:2003.

SQL необходим для работы с данными – он позволяет создавать и удалять таблицы внутри базы данных, выбирать необходимую информацию из этих таблиц, путем фильтрации, аггрегации и объединения. Также SQL позволяет читать внешние данные, например Excel файлы, сжимать данные и партицировать таблицы. Существуют и не тривиальные способы использования SQL – например, отправка писем в качестве оповещений об окончании работы скрипта.

Где применяется SQL

SQL используется практически во всех сферах, с которыми мы соприкасаемся в обычной жизни. Среди них:
• Мобильные и веб-приложения, для хранения данных пользователей и вывода сохраненных данных.
• Аналитика в компаниях, для создания отчетов и поиска инсайтов (банках, аптечных сетях, строительстве, добыче и переработке полезных ископаемых, ритейле и многих других).
• Игровая индустрия, для хранения данных об игроках и их персонажах.
• Data-science: для обработки больших объемов данных.
• Управление базами данных: для администрирования и оптимизации баз данных.

Что такое операторы в языке запросов

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

Группы операторов SQL

Как указано выше, операторы SQL можно разделить на несколько основных групп:

1. DDL (Data Definition Language) содержит в себе следующие операторы:

• CREATE. Оператор позволяет создавать новые объекты в базе данных (таблицы, индексы, процедуры, схемы). Например, создадим таблицу с полями ID, Name и Age:

CREATE TABLE users (
id INT,
      name VARCHAR(150),
      age SMALLINT
   );

При создании таблиц также важно указывать тип данных, которые будут храниться в столбце. В данном примере INT SMALLINT это число, а VARCHAR это строковые данные с длиной не более 150 символов.

• ALTER. Позволяет изменить существующую структуру объектов. Давайте для примера добавим в нашу таблицу столбец EMAIL с длиной не более 100 символов:

ALTER TABLE users ADD COLUMN email VARCHAR(100);

• DROP. Удаляет объект из БД. Например, чтобы удалить таблицу users и все ее содержимое навсегда, нам необходимо написать:

DROP TABLE users;

• TRUNCATE. Практически мгновенно удаляет все строки из таблицы, но сохраняет ее структуру. Таким образом, чтобы очистить содержимое таблицы users мы можем написать следующее:

TRUNCATE TABLE users;
2. DML (Data Manipulation Language) является группой для манипуляции с данными и включает в себя операторы:

• SELECT. Позволяет выбирать необходимые данные из таблиц.

SELECT * FROM users;

В данном примере мы выгрузили все строки таблицы users, но если нам нужны какие-то определенные, то мы также можем использовать фильтрацию, например:

SELECT * FROM users
where age >= 35;

Или чтобы получить только отдельные колонки мы можем изменить запрос на:

SELECT name FROM users
where age >= 35;

Таким образом мы получим только имена пользователей, которые старше 35 лет.
• INSERT. Необходим для добавления в таблицу новых строк. Давайте добавим в нашу таблицу нового пользователя Ивана, 26 лет:

INSERT INTO users (name, age) values ('Иван',26);

• UPDATE. Позволяет изменить существующие данные. Поэтому давайте изменим возраст Ивана на 29 лет:

UPDATE users SET age = 29 WHERE name = 'Иван';

• DELETE. Удаляет записи из таблицы. Но данные оператор не стоит путать с TRUNCATE, так как DELETE позволяет удалить как все, так и только ненужные данные, а не всю таблицу целиком. При этом TRUNCTE является целевым решением если вам нужно очистить всю таблицу, так как работает значительно быстрее.

DELETE FROM users where name = 'Иван';

Данная команда удаляет всех пользователей с именем Иван из таблицы. Поэтому я рекомендую, прежде чем делать DELETE, предварительно сделать SELECT с такими же фильтрами и убедиться, что все эти строки нам не нужны и только после этого заменить SELECT на DELETE.

3. DCL (Data Control Language). Эта группа операторов необходима для работы с доступами к таблицам и представлена следующими операторами:

• GRANT. Выдает права конкретному пользователю, схеме или всем на определенную таблицу.

GRANT SELECT ON users TO 'user1';

Данной командой мы выдаем права user1 на чтение нашей таблицы.
• REVOKE. Отзывает права доступа на таблицу.

REVOKE SELECT ON users FROM 'user1';

Команда, указанная выше отзывает права доступа на чтение таблицы user у user1.
• DENY. Запрещает определенные действия, например внесение изменений или удаление таблиц.

DENY INSERT ON user TO 'user1';

Этой командой мы запрещаем user1 добавлять данные в таблицу user.

4. TCL (Transaction Control Language) в свою очередь позволяет управлять транзакциями.

• BEGIN. Это команда, которая запускает транзакцию.

BEGIN
UPDATE users SET balance = balance - 10 WHERE id = 1;
UPDATE users SET balance = balance + 10 WHERE id = 2;
COMMIT;

Эта комбинация изображает транзакцию между двумя клиентами с id 1 и 2, в данном случае баланс одного должен уменьшиться на 10, а второго – увеличиться на 10. Транзакция будет возможна только в случае одновременного исполнения условий у обоих клиентов.
• COMMIT. Сохраняет изменения, сделанные в транзакции.

INSERT INTO users (name, age) values ('Иван',26);
COMMIT;

Оператор COMMIT фиксирует данные в таблице.
• ROLLBACK. Отменяет изменения, сделанные в транзакции.

BEGIN
UPDATE users SET balance = balance - 10 WHERE id = 1;
UPDATE users SET balance = balance + 10 WHERE id = 2;
ROLLBACK
COMMIT;

Данная комбинация отменяет текущую транзакцию и возвращает баланс в прежнее состояние.
• SAVEPOINT. Создает точку сохранения внутри транзакции.

BEGIN
UPDATE users SET balance = balance - 10 WHERE id = 1;
SAVEPOINT my_savepoint
UPDATE users SET balance = balance - 30 WHERE id = 1;
ROLLBACK TO SAVEPOINT my_savepoint
COMMIT;

В данном примере мы сначала уменьшаем баланс пользователя с id = 1 на 10 и создаем SAVEPOINT, после уменьшаем баланс еще на 30 и откатываем изменения на наш SAVEPOINT. То есть последняя команда с вычетом из баланса 30 отменяется.

Заключение

Таким образом, как вы уже могли заметить, SQL является очень гибким языком, позволяющим делать многое для оптимизации процессов и обработки данных. А знание SQL является ключевым навыком для аналитика. Да, конечно, в последнее время популярность набирает Python, но без понимания того как работает база данных, как обрабатывать данные на языке SQL и писать оптимальные запросы, сложно успешно и быстро развиваться в аналитике.

Подпишитесь на нашу рассылку
Имя*
Email*
Номер телефона*
Заполняя данную форму, Вы соглашаетесь с политикой конфиденциальности
Никакого спама. Только точечные рассылки с лучшими материалами.