-
Notifications
You must be signed in to change notification settings - Fork 7
exam11 6
Реферат к лекции 11 (27). Базы Данных
Выполнила: Никитина А.С. ИДБ-19-05
Проверил: Алаев К.В. ИДБ-19-05
Structured Query Language (SQL) — язык структурированных запросов, с помощью него пишутся специальные запросы (SQL инструкции) к базе данных с целью получения этих данных из базы и для манипулирования этими данными.
С точки зрения реализации язык SQL представляет собой набор операторов, которые делятся на определенные группы и у каждой группы есть свое назначение. В сокращенном виде эти группы называются DDL, DML и DCL.
Так же операторы групп DDL, DML и DCL применяются в NoSQL языках. Термин NoSQL обозначает нереляционные типы баз данных, которые хранят данные в формате, отличном от реляционных таблиц. Однако базы данных NoSQL можно запрашивать с помощью API-интерфейсов идиоматических языков, языков декларативных структурированных запросов и языков примеров запросов — вот почему их также называют «не только SQL» базами данных.
DDL (Data Definition Language) – язык определения данных. Предназначен для создания базы данных (таблиц, индексов и т.д.) и редактирования ее схемы.
DCL (Data Control Language) – язык управления данными. Содержит операторы для разграничения доступа пользователей к объектам базы данных.
DML (Data Manipulation Language) – язык обработки данных. Содержит операторы для внесения изменений в содержимое таблиц базы данных.
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. Создание таблицы на основе уже существующей таблицы. Копирует структуру без записей.
Рис.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: <индекс_схемы>}) |
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
Рис.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) |
Data Control Language (DCL) – группа операторов определения доступа к данным. Иными словами, это операторы для управления разрешениями, с помощью них мы можем разрешать или запрещать выполнение определенных операций над объектами базы данных. Для NoSQL языков группа операторов DСL точно не определена, но частично соответсвует командам аутентификации и авторизации, где у ролей пользователей (admin, root, DBowner) уже предписаны уровни доступа и привилегии к набору коллекций.
Название оператора | Назначение | Пример |
---|---|---|
GRANT | Выдача разрешения на определённые операции | GRANT <Возможности> ON <Имя_таблицы> TO <Пользователь> |
REVOKE | Отзыв выданных разрешений | REVOKE <Возможности> ON <Имя_таблицы> TO <Пользователь> |
DENY | Выдача запрет, имеющий приоритет над разрешением | DENY <Возможности> ON <Имя_таблицы> TO <Пользователь> |
Рисунок 3. Пример основных операторов DCL в SQL
Операторы подобные операторам DCL в NoSQL (на примере MongoDB)
Название оператора | Назначение | Пример |
---|---|---|
logout | Завершение сеанса всех пользователей определенной БД | db.logout() |
saslStart | Аутентификаия | admin:<password>@<server>/admin authMechanism=PLAIN&authSource=$external |
Список литературы: