Введение
Работа с 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 и писать оптимальные запросы, сложно успешно и быстро развиваться в аналитике.