- Что такое SQL
- Виды SQL-команд
- Ограничения целостности в БД с примерами
- Основные команды SQL
- SQL-команды транзакции
- Команды управления данными
Что такое SQL
SQL (Structured Query Language) – это стандартный язык программирования и управления реляционными базами данных. Он используется для создания, модификации и управления данными в реляционных БД.
Это удобный и стандартизированный способ взаимодействия с данными из баз, который позволяет выполнять различные операции. В них входит:
- выборка данных,
- вставка новых записей,
- обновление существующих данных,
- удаление записей.
В целом, SQL – это крайне мощный и универсальный инструмент для работы с системами реляционных баз данных (СУБД), что сделало его одним из самых используемых используемым языков в области разработки ПО и администрирования БД.
Виды SQL-команд
SQL-команды можно разделить на несколько основных категорий в зависимости от их функциональности и применения:
- DDL (Data Definition Language) – «Язык определения данных»
DDL представляет собой набор инструкций, применяемых для определения и управления структурой базы данных. Он предоставляет возможности создания, модификации и удаления объектов базы данных – таблиц, индексов, представлений и других.
К этой категории относятся следующие команды CREATE, ALTER, DROP, RENAME, COMMENT и TRUNCATE.
- DML (Data Manipulation Language) – «Язык манипуляции данными»
DML представляет собой подмножество команд для изменения данных внутри базы данных. В отличие от DDL, который применяется для определения структуры базы данных, DML сосредотачивается на вставке, изменении и удалении данных в таблицах.
Основные команды DML включают INSERT, UPDATE, DELETE и MERGE.
- DCL (Data Control Language) – «Язык управления доступом к данным»
DCL – это набор команд, используемых для управления правами доступа к данным в базе данных. DCL обеспечивает контроль над тем, кто и как может получить доступ к данным, изменять их или управлять ими в базе данных.
Основные команды DCL включают в себя GRANT и REVOKE.
- TCL (Transaction Control Language) – «Язык управления транзакциями»
TCL – это набор команд, предназначенных для управления транзакциями в базе данных.
Важно! Транзакции – это логические блоки операций, которые выполняются как единое целое: все операции должны быть успешно завершены, или ни одна из них не должна быть выполнена.
TCL предоставляет команды для управления стартом, завершением и отменой транзакций. В них входят: BEGIN, COMMIT, ROLLBACK и ROLLBACK TO SAVEPOINT.
- DQL (Data Query Language) – «Язык запросов данных»
DQL – набор команд языка SQL, предназначенный для выполнения запросов к базе данных с целью извлечения данных. Цель DQL – получение информации из базы данных, а не изменение ее структуры или содержимого.
Основная команда DQL – это SELECT, которая используется для извлечения данных из одной или нескольких таблиц.
Ограничения целостности в БД с примерами
Ограничения целостности в базе данных – это правила, направленные на обеспечение корректности и согласованности данных в базе. Они используются для того, чтобы гарантировать, что данные соответствуют определенным стандартам и требованиям.
Вот несколько основных видов ограничений целостности:
Команда |
Описание |
Пример использования |
---|---|---|
PRIMARY KEY |
Гарантирует уникальность значений в столбце (или группе столбцов) и предотвращает наличие NULL-значений. |
|
FOREIGN KEY |
Устанавливает связь между столбцом в текущей таблице и PRIMARY KEY столбцом в другой таблице, обеспечивая согласованность данных. |
CREATE TABLE Orders ( |
UNIQUE |
Гарантирует уникальность значений в столбце (или группе столбцов), но, в отличие от PRIMARY KEY, позволяет иметь NULL-значения |
|
CHECK |
Применяется для установки критериев, которым должны удовлетворять данные в конкретном столбце таблицы. Если данные, предлагаемые для вставки или обновления, не соответствуют установленному условию, операция вставки или обновления будет отклонена. |
CREATE TABLE Workers ( |
NOT NULL |
Предотвращает вставку значений NULL в указанный столбец. Если для этого столбца установлено ограничение NOT NULL, то каждая запись, добавляемая в таблицу, обязана содержать ненулевое значение в указанном столбце. |
CREATE TABLE Students ( |
DEFAULT |
Устанавливает значение по умолчанию для столбца, если при вставке новой записи не указано значение для этого столбца. |
|
Эти ограничения целостности помогают поддерживать надежность и согласованность данных в базе данных, а также предотвращают ошибки и некорректные операции при вставке, обновлении и удалении данных.
Основные команды SQL
- Команда SELECT. Используется для извлечения данных из одной или нескольких таблиц.
Пример:
Этот запрос извлекает данные из таблицы «Workers». Он выбирает имена (FirstName) и фамилии (LastName) сотрудников, которые работают в отделе «PR».
Основной синтаксис SELECT:
- SELECT + DISTINCT or ALL. Выбирает указанные столбцы из таблицы (или таблиц). При этом ключевые слова определяют, следует ли выбирать только уникальные записи («DISTINCT») или все записи («ALL»), включая повторяющиеся.
- FROM. Указывает, из какой (или каких) таблицы (таблиц) извлекать данные.
- WHERE. Предоставляет опциональное условие для фильтрации записей. Только те записи, которые удовлетворяют условиям, будут включены в результат.
- GROUP BY. Задает опциональное условие для группировки записей по определенному столбцу или набору столбцов.
- HAVING. Это опциональное условие, применяемое после группировки («GROUP BY»). Оно фильтрует группы записей в соответствии с заданными критериями.
- ORDER BY. Задает условие для сортировки результатов по указанным столбцам. По умолчанию сортировка осуществляется в порядке увеличения значений; при необходимости можно указать «DESC» для сортировки по убыванию.
- LIMIT. Это опциональное условие, которое ограничивает количество выбираемых записей.
Расширенный пример:
Этот запрос выбирает уникальные имена и фамилии сотрудников из отдела «PR», группирует их по отделу, фильтрует только те отделы, где средняя зарплата больше 60 000, сортирует результаты по фамилии в убывающем порядке и ограничивает вывод 10 записями.
- Команда INSERT. Добавляет новые записи в таблицу.
Пример:
INSERT INTO Workers (FirstName, LastName, Age)
VALUES ('Ivan', 'Ivanov', 27);
Эта команда добавляет новую запись в таблицу «Workers». В данном случае, добавляется сотрудник с именем «Ivan», фамилией «Ivanov» и возрастом 27 лет.
- Команда UPDATE. Меняет уже существующие данные в таблице.
Пример:
UPDATE Workers
SET Age = 31
WHERE LastName = 'Petrov';
Команда обновляет данные в таблице «Workers». Она устанавливает значение возраста (Age) равным 31 для сотрудников с фамилией «Petrov».
- Команда DELETE. Удаляет выбранные данные из таблицы.
Пример:
DELETE FROM Workers
WHERE LastName = 'Petrov';
Команда удаляет записи о сотрудниках с фамилией «Petrov» из таблицы «Workers». Все строки, соответствующие условию, будут удалены.
- MERGE. Позволяет объединять данные из источника с данными в целевой таблице, обновляя существующие записи и вставляя новые, если они отсутствуют.
Пример:
Этот запрос использует команду MERGE для объединения данных из таблицы источника (SourceTable) с данными в целевой таблице (TargetTable). Если записи совпадают (по значению WorkerID), то обновляется поле Salary. Если запись отсутствует в целевой таблице, она вставляется. Эта команда может быть полезной при синхронизации данных из разных источников.
- CREATE. Создает новые объекты в базе данных, включая таблицы, индексы или представления.
Пимер:
Эта команда создает новую таблицу с именем «Workers». Она содержит три столбца:
- «id» с типом данных INT (целые числа), который также является первичным ключом.
- «name» с типом данных VARCHAR(50) (строки длиной до 50 символов).
- «salary» с типом данных DECIMAL(10,2) (десятичное число с общим числом цифр 10 и двумя знаками после запятой).
- ALTER. Меняет структуры существующих объектов в базе данных. Этой командой можно добавить или удалить столбцы в таблицах.
Пример:
Команда изменяет структуру существующей таблицы «Workers», добавляя новый столбец «department» с типом данных VARCHAR(50).
- DROP. Удаляет объекты базы данных – таблицы или индексы.
Пример:
Эта команда удаляет всю таблицу «Workers» со всеми данными в ней.
Важно! Удаление таблицы приводит к потере всех данных в ней, поэтому будьте осторожны при использовании этой команды.
- RENAME. Позволяет переименовывать существующие объекты базы данных.
Пример:
Эта команда переименовывает таблицу «Workers» в «WorkerData». Теперь ее новое имя – «WorkerData».
- COMMENT. Добавляет комментарий к объектам базы данных.
Пример:
Эта команда добавляет комментарий, что в таблице «Workers» находятся данные сотрудников компании. Комментарии могут использоваться для предоставления дополнительной информации о структуре базы данных.
- TRUNCATE. Удаляет все записи из таблицы, но оставляет структуру таблицы нетронутой.
Пример:
Команда удаляет все строки из таблицы «Workers», но сохраняет саму структуру таблицы. Таким образом, таблица остается, но уже не содержит данные.
Эти команды обеспечивают базовый функционал SQL для работы с данными в реляционных базах данных.
SQL-команды транзакции
SQL обеспечивает возможность эффективного управления транзакциями, которые представляют собой логически связанные операции, выполняемые как единое целое для поддержания целостности и согласованности данных в базе данных.
Ниже представлены основные команды, связанные с транзакциями:
- BEGIN. Запускает новую транзакцию, при этом все последующие операции рассматриваются как неотъемлемая часть данной транзакции.
- COMMIT. Вносит конечные изменения, внесенные в ходе текущей транзакции, и закрепляет их в базе данных. Если транзакция завершена успешно, команда COMMIT сохраняет изменения. В противном случае команда никак не меняет БД.
Пример:
В данном примере все изменения, включая увеличение зарплаты сотрудников PR-отдела, подтверждаются использованием команды COMMIT.
- ROLLBACK. Эта команда выполняет отмену всех изменений, произведенных в ходе текущей транзакции, и восстанавливает базу данных в состояние, предшествующее началу данной транзакции.
Пример:
Если в процессе выполнения транзакции возникает ошибка, команда ROLLBACK отменяет все изменения, сделанные в рамках текущей транзакции.
- SAVEPOINT. Создает точку сохранения внутри транзакции. Это позволяет откатывать изменения только до указанной точки, не затрагивая остальные части транзакции.
Пример:
Этот запрос обновляет зарплаты сотрудников в отделе «PR», увеличивая их на 10%, а затем создает точку сохранения с именем «my_sp». Она позволяет откатиться к этой конкретной точке в случае необходимости, при этом сохраняя часть изменений, выполненных в транзакции.
- ROLLBACK TO SAVEPOINT. Эта команда откатывает транзакцию до указанной точки сохранения.
Предположим, что после создания точки сохранения «my_sp» у нас возникла ошибка или выполнение операции прервалось. Вы захотели откатиться к точке сохранения, отменив часть изменений, но сохранив другую часть.
Вот как эта ситуация может выглядеть на практике:
В этом примере, если операция DELETE завершится неудачно (например, из-за наличия ограничений целостности), мы сможем использовать ROLLBACK TO SAVEPOINT my_sp, чтобы отменить только изменения, сделанные после создания точки сохранения «my_sp». В результате, COMMIT сохранит только изменения, которые были сделаны до точки сохранения.
- SET TRANSACTION. Управляет характеристиками транзакции – изоляцией транзакции и другими параметрами.
Команды управления данными
Команды GRANT и REVOKE используются в SQL для управления правами доступа к данным в базе данных. Они предоставляют администраторам баз данных контроль над тем, кто может выполнять различные операции с данными в таблицах, представлениях и других объектах базы данных.
Давайте подробнее поговорим о каждой из них:
- GRANT. Команда GRANT используется для предоставления определенным пользователям или ролям конкретных привилегий на объекты БД.
Пример:
Этот запрос даст пользователю IvanIvanov права на выполнение операций SELECT и INSERT в таблице «Workers».
- REVОKE. Команда REVOKE используется для отмены предоставленных ранее привилегий у определенных пользователей или ролей.
Пример:
Этот запрос отменяет предоставленные ранее права на выполнение операций SELECT и INSERT в таблице «Workers».
Обе команды GRANT и REVOKE играют ключевую роль в обеспечении безопасности базы данных, контролируя, какие пользователи или роли имеют доступ к каким данным и какие операции они могут выполнять.