Работа с 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 можно разделить на несколько основных групп:
- DDL (Data Definition Language) содержит в себе следующие операторы:
CREATE. Оператор позволяет создавать новые объекты в базе данных — таблицы, индексы, процедуры, схемы). Например, создадим таблицу с полямиID,NameиAge:
CREATE TABLE users (
id INT,
name VARCHAR(150),
age SMALLINT
);
При создании таблиц также важно указывать тип данных, которые будут храниться в столбце. В данном примере SMALLINT — это число, а VARCHAR — это строковые данные с длиной не более 150 символов.
ALTER. Позволяет изменить существующую структуру объектов. Давайте для примера добавим в нашу таблицу столбецEMAILс длиной не более 100 символов:
ALTER TABLE users ADD COLUMN email VARCHAR(100);
DROP. Удаляет объект из БД. Например, чтобы удалить таблицуusersи всё её содержимое навсегда, нам необходимо написать:
DROP TABLE users;
TRUNCATE. Практически мгновенно удаляет все строки из таблицы, но сохраняет её структуру. Таким образом, чтобы очистить содержимое таблицыusers, мы можем написать следующее:
TRUNCATE TABLE users;
- 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позволяет удалить как все, так и только ненужные данные, а не всю таблицу целиком. При этомTRUNCATEявляется целевым решением, если вам нужно очистить всю таблицу, так как работает значительно быстрее.
DELETE FROM users where name = 'Иван';
Данная команда удаляет всех пользователей с именем Иван из таблицы. Поэтому я рекомендую, прежде чем делать DELETE, предварительно сделать SELECT с такими же фильтрами и убедиться, что все эти строки нам не нужны, и только после этого заменить SELECT на DELETE.
- 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.
- 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 и писать оптимальные запросы, сложно успешно и быстро развиваться в аналитике.
