В статье обсудим категории команд в языке SQL и выясним, что означает и что в себя включает DDL, DML, DCL и TCL. Объясним термины, приведем примеры команд и изучим базовые концепции Structured Query Language.
Коротко о языке структурированных запросов SQL
Сейчас SQL де-факто — стандарт среди языков запросов к реляционным базам данных. Компании прикладывают много сил, чтобы их хранилища данных были SQL-совместимыми, например Amazon Redshift, Snowflake, Firebolt и другие. Но еще полвека назад разработчики активно думали над тем, какую модель данных и язык выбрать для своей базы данных.
На курсе Skypro «Аналитик данных» язык SQL учат для того, чтобы обращаться к базам данных и обрабатывать полученную информацию.
До реляционной модели использовали два основных варианта:
network data model — обладала высокой сложностью запросов при большой вероятности испортить данные;
hierarchy data model — отличалась дублированием данных и отсутствием независимости языка запросов от модели данных.
Математик Эдгар Кодд долго наблюдал, как люди тратят время, каждый раз переписывая запросы при изменении схемы таблицы или схемы хранения данных, а затем придумал реляционную модель данных. Она основывается на табличном способе представления данных.
Главные преимущества реляционной модели:
хранение данных в простых структурах данных;
доступ к данным через высокоуровневый язык;
независимость от физического хранения данных.
Кодд предложил использовать язык реляционной алгебры для доступа к данным. Идея реляционной модели понравилась сообществу — в семидесятые разработали первые реляционные БД: Ingres, System R и Oracle. Вместе с System R появился язык запросов SEQUEL, позже переименованный в SQL.
Structured Query Language — язык программирования, который широко используется в современных системах управления базами данных для сохранения, обработки и изменения данных. SQL относится к семейству декларативных языков. Ключевая цель в том, чтобы сказать системе, какой ответ необходим, то есть описать ожидаемый результат, а не процесс его получения. Это означает, что некоторые СУБД ответственны за эффективное исполнение запросов. Такие системы имеют сложные оптимизаторы запросов, которые способны переписывать запросы и искать оптимальные стратегии исполнения.
Язык SQL используют и тестировщики. На курсе Skypro «Инженер по тестированию» учат с его помощью составлять автоматические тесты.
Команды SQL — это операторы, которые используются для коммуникации с базой данных, выполнения определенных задач и функций. Все команды делятся на четыре категории: DDL, DML, DCL, и TCL.
Протестировать команды поможет сервис DB Fiddle. Используемый код совместим с PostgreSQL v14.
Узнать больше о SQL помогают курсы по Java-разработке от онлайн-университета Skypro. Базовая программа рассчитана на 11 месяцев обучения, а ускоренная позволяет заработать первые деньги в IT уже через три месяца. Оплатить курсы можно в рассрочку.
Что значит DDL (Data Definition Language)
DDL, или Data Definition Language — это группа команд, которые используются для создания и изменения структуры объектов базы данных: таблиц, представлений, схем и индексов.
Наиболее известные команды SQL DDL — CREATE, ALTER, DROP. Рассмотрим их подробнее.
CREATE
Этот DDL-оператор создает объекты базы данных, например таблицы или представления.
CREATE TABLE IF NOT EXISTS table_name ( user_id serial PRIMARY KEY, username VARCHAR ( 50 ) NOT NULL, last_login TIMESTAMP );
ALTER
Оператор применяется для модификации существующей структуры базы данных. Может добавить или удалить столбцы в таблице, изменить тип столбца, добавить ограничения и тому подобное. Вот пример переименования таблицы с использованием команды:
ALTER TABLE old_table_name RENAME TO new_table_name;
DROP
Команду используют для удаления объектов из базы данных: таблицы, представления или индекса. Пример удаляет таблицу с именем my_table.
Пример для PostgreSQL v14:
DROP TABLE my_table;
Команду DROP нельзя отменить, поэтому будьте аккуратны, когда используете ее.
Что такое DML (Data Manipulation Language)
DML, или Data Manipulation Language — это группа операторов, которые позволяют получать и изменять записи, присутствующие в таблице. Разберем отдельные DML-команды.
SELECT
Эта инструкция используется для получения кортежей из таблицы.
SELECT user_id, username FROM table_name;
INSERT INTO
Это ключевое слово применяют для добавления новых записей в таблицу.
INSERT INTO table_name(user_id, username, last_login) VALUES(1, 'Ivan Petrov', NULL)
DELETE
DML-команда позволяет удалить одну или несколько записей.
DELETE FROM table_name WHERE username = 'nick';
UPDATE
Команда используется для обновления и изменения значений записи в таблице.
UPDATE table_name SET username = 'newnick' WHERE user_id = 1;
Значение DCL (Data Control Language)
DCL, или Data Control Language — это команды SQL, которые используют для предоставления и отзыва привилегий пользователя базы данных. При этом пользователь не может откатить изменения. Рассмотрим наиболее известные команды: GRANT и REVOKE.
GRANT
Используется для предоставления пользователям прав доступа к базе данных. Например, команда разрешает пользователю `user` добавлять записи в таблицу `my_table`.
GRANT INSERT ON my_table TO user;
REVOKE
Команда, которая позволяет отозвать ранее выданные права доступа. Например, команда отзывает право на вставку в таблицу `my_table` у пользователя `user`.
REVOKE INSERT ON my_table TO user;
Команды TCL (Transaction Control Language)
TCL, или Transaction Control Language — одни из наиболее популярных команд SQL. Их используют для обеспечения согласованности базы данных и для управления транзакциями.
Транзакция — это набор SQL-запросов, выполняемых над данными, которые объединены в атомарную секцию. Это значит, что промежуточные результаты операции не видны для других конкурирующих транзакций — и вся секция будет либо выполнена, либо полностью отменена в случае ошибки.
Примеры команд: BEGIN/COMMIT, ROLLBACK.
BEGIN/COMMIT
Команда, которая применяется для объявления транзакции. Команда иллюстрирует пример банковской транзакции: пользователь с `user_id`, равным 10, переводит 100 условных единиц на баланс пользователя с `user_id`, равным 20. Конструкция BEGIN/COMMIT гарантирует, что баланс изменится сразу у двух пользователей — либо ни у одного.
BEGIN; UPDATE my_table SET balance = balance - 100 WHERE used_id = 10; UPDATE my_table SET balance = balance + 100 WHERE used_id = 20; COMMIT;
ROLLBACK
Откатывает текущую транзакцию и отменяет все обновления, сделанные транзакцией.
BEGIN; UPDATE my_table SET balance = balance - 100 WHERE used_id = 10; UPDATE my_table SET balance = balance + 100 WHERE used_id = 20; ROLLBACK COMMIT;
Освоить профессию «Аналитик данных» можно на курсе онлайн-университета Skypro с нуля за 12 месяцев. Вы изучите Excel, SQL и основы Python, отработаете знания на практических задачах и выйдете на рынок труда уверенным младшим специалистом. В процессе учебы будут помогать кураторы и наставники, а специалисты центра карьеры научат составлять резюме и проходить собеседования.
Краткие итоги
Команды групп DDL, DML, DCL и TCL помогают с различными функциями, включая запись, обновление, редактирование, удаление данных и управление транзакциями. Знать основные команды SQL важно, чтобы понимать принципы взаимодействия с базами данных.
Добавить комментарий