Skip to content
Angelina edited this page Dec 7, 2022 · 27 revisions

Языки определения (DDL), управления (DCL) и манипулирования (DML) данными

Реферат к лекции 11 (27). Базы Данных

Выполнила: Никитина А.С. ИДБ-19-05

Проверил: Алаев К.В. ИДБ-19-05


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

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

Так же операторы групп DDL, DML и DCL применяются в NoSQL языках. Термин NoSQL обозначает нереляционные типы баз данных, которые хранят данные в формате, отличном от реляционных таблиц. Однако базы данных NoSQL можно запрашивать с помощью API-интерфейсов идиоматических языков, языков декларативных структурированных запросов и языков примеров запросов — вот почему их также называют «не только SQL» базами данных.

📝 Что такое DDL, DML, DCL?

DDL (Data Definition Language) – язык определения данных. Предназначен для создания базы данных (таблиц, индексов и т.д.) и редактирования ее схемы.

DCL (Data Control Language) – язык управления данными. Содержит операторы для разграничения доступа пользователей к объектам базы данных.

DML (Data Manipulation Language) – язык обработки данных. Содержит операторы для внесения изменений в содержимое таблиц базы данных.

📝 DDL. Выборка, обновление и удаление данных

Data Definition Language (DDL) – это группа операторов определения данных. Другими словами, с помощью операторов, которые входят в данную группу, мы определяем структуру базы данных и работаем с объектами этой базы (создание, изменение, удаление). Для NoSQL языков группа операторов DDL называется командами сбора и определения индекса.

Операторы DDL в SQL

Название оператора Назначение Пример
CREATE DATABASE/INDEX/STORED PROCEDURE/TRIGGER ... Создание CREATE DATABASE <Имя> [<дополнительные свойства>])
CREATE TABLE Создание новой таблицы CREATE TABLE <Имя_таблицы> (<определение_столбцов*> <доп_свойства_таблицы*>)
ALTER Изменение ALTER TABLE <Имя_таблицы> ADD <имя_столбца>, <тип_данных>, ...
RENAME Переименование RENAME TABLE <Имя_таблицы> TO <новое_имя_таблицы>
DROP Удаление DROP TABLE <Имя_таблицы>
TRUNCATE Удаление данных TRUNCATE TABLE <Имя_таблицы>

(*) В определение столбцов и дополнительных свойств таблицы в команде CREATE TABLE входит:

  • Имя столбца (обязательное свойство столбца).
  • Тип данных (обязательное свойство столбца).
  • Специальное значение NULL/NOT NULL, т.е. возможность оставлять поле пустым (необязательное свойство столбца, по умолчанию столбец NULL).
  • PRIMARY KEY. Уникальный первичный ключ, который может быть присвоен одному столбцу, либо быть составным (т.е. из нескольких столбцов), применим только для NOT NULL столбцов.
  • DEFAULT. Значение по умолчанию.
  • AUTO_INCREMENT. Автоматическое увеличение значения столбца при добавлении новой записи (т.е. счетчик). Применим только для целочисленного первичного ключа.
  • UNIQUE. Означает, что значения столбца должны быть уникальными, в отличии от PRIMARY KEY, можно применять к NULL столбцам.
  • CHECK. Дополнительная проверка данных для столбца или набора столбцов.
  • FOREIGN KEY...REFERENCES. Ссылка на столбец или группу столбцов другой таблицы.
  • LIKE. Создание таблицы на основе уже существующей таблицы. Копирует структуру без записей.

DDL Рис.1.Пример основных операторов DDL в SQL

Операторы DDL в NoSQL (на примере MongoDB)

Название оператора Назначение Пример
create Создание db.createCollection(“<название_коллекции>”)
insert Добавление db.<коллекция>.insert({<столбец>:”<значение>″,...})
update + $set Изменение db.<коллекция>.update({ },{ $set: {<options>})
update + $unset Удаление столбца db.<коллекция>.update({ },{ $unset: {<options>})
remove Удаление строки db.<коллекция>.remove(<options>)
drop Удаление коллекции db.<коллекция>.drop(<options>)
dropDatabase Удаление всех коллекций из схемы db.runCommand({dropDatabase: <индекс_схемы>})

📝 DML. Процедурные и декларативные языки

Data Manipulation Language (DML) – это группа операторов для манипуляции данными. С помощью этих операторов мы можем добавлять, изменять, удалять и выгружать данные из базы. Для NoSQL языков группа операторов DML называется командами документа (содержимого коллекции).

Языки DML разделяются, в основном, на два типа: Procedural DMLs — описывают действия над данными. Declarative DMLs — описывают сами данные.

Операторы DML в SQL

Название оператора Назначение Пример
SELECT Выборка записей SELECT <столбец> FROM <Имя_таблицы>
UPDATE Изменение записей UPDATE <Имя_таблицы> SET <столбец> = <значение> WHERE <условие>
INSERT Вставка записей INSERT INTO <Имя_таблицы> VALUES (<значение>, ... )
DELETE Удаление записей DELETE FROM <Имя_таблицы> WHERE <условие>
MERGE Cлияние данных MERGE <Основная таблица> USING <Таблица или запрос источника> ON <Условия объединения>

Дополнительные элементы запросов:

  • WHERE. Условие, по которому производится отбор записей. Внутри элемента WHERE часто используют дополнительные условия фильтрации: IN/NOT IN (условия вхождения значения в определенный список), AND/OR (соединение нескольких условий отбора), LIKE (условие сравнения). Пример: SELECT * FROM <таблица> WHERE <столбец> = "<значение>"
  • GROUP BY. Группировка значений по столбцу. С элементом GROUP BY обязательно используются агрегатные функции SUM, AVG, COUNT, MAX, MIN, которые должны быть также указаны внутри SELECT с указанием столбца, к которому такая функция применяется. Пример: SELECT <солбец1>, count(<столбец2>) FROM <таблица> GROUP BY <столбец1>
  • HAVING. Фильтрация на уровне сгруппированных данных. Пример: SELECT <солбец1>, count(<столбец2>) FROM <таблица> GROUP BY <столбец1> HAVING count(<столбец2>) >= 5
  • ORDER BY. Сортировка данных. ASC (по умолчанию) - сортировка по возрастанию, DESC - по убыванию. Пример: SELECT * FROM <таблица> WHERE <столбец> = "<значение>" ORDER BY DESC

DML Рис.2.Пример основных операторов DML в SQL

Операторы DML в NoSQL (на примере MongoDB)

Название оператора Назначение Пример
aggregate Группировка значений db.collection.aggregate(<options>)
count Подсчет элементов db.runCommand({count: <collection or views>
distinct Поиск различных значений в коллекции db.<коллекция>.distinct(field, query, options)
find Выбор документов по фильтрам db.<коллекция>.find(query, projection, options)
findAndModify Выбор и изменение документов по фильтрам db.<коллекция>.findAndModify(query,projection,options)

📝 DСL. Определение доступа к данным

Data Control Language (DCL) – группа операторов определения доступа к данным. Иными словами, это операторы для управления разрешениями, с помощью них мы можем разрешать или запрещать выполнение определенных операций над объектами базы данных. Для NoSQL языков группа операторов DСL точно не определена, но частично соответсвует командам аутентификации и авторизации, где у ролей пользователей (admin, root, DBowner) уже предписаны уровни доступа и привилегии к набору коллекций.

Название оператора Назначение Пример
GRANT Выдача разрешения на определённые операции GRANT <Возможности> ON <Имя_таблицы> TO <Пользователь>
REVOKE Отзыв выданных разрешений REVOKE <Возможности> ON <Имя_таблицы> TO <Пользователь>
DENY Выдача запрет, имеющий приоритет над разрешением DENY <Возможности> ON <Имя_таблицы> TO <Пользователь>

DCL
Рисунок 3. Пример основных операторов DCL в SQL

Операторы подобные операторам DCL в NoSQL (на примере MongoDB)

Название оператора Назначение Пример
logout Завершение сеанса всех пользователей определенной БД db.logout()
saslStart Аутентификаия admin:<password>@<server>/admin authMechanism=PLAIN&authSource=$external

Список литературы:

Clone this wiki locally