Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Языки управления базами данных

Эволюция языков для управления базами данных

Появление и быстрое распространение баз данных (БД) с 1980-х гг. потребовало средств управления ими. Обычные языки программирования для этого не подходили, поскольку требовали высокой квалификации операторов, а базы данных были рассчитаны на управление посредством персонала, хорошо ориентирующегося, прежде всего, в своей предметной области, а не в информационных технологиях.

Поскольку ввод и вывод информации в раннюю эпоху развития БД осуществлялся через командную строку и терминальные текстовые сообщения, вскоре были разработаны языки, позволяющие управлять БД, напоминающие обычный разговорный английский язык (предложения в повелительном наклонении). Поначалу они делились на две категории: языки определения схем БД (SDL - Schema Definition Language) и языки манипулирования данными (DML - Data Manipulation Language, т.е. добавление, редактирование, удаление записей).

Постепенно из инструкций SDL и DML сформировалось семейство интегрированных языков, содержащих необходимые средства для работы с БД. За ними закрепилось название SQL (Structured Query Language - языки структурированных запросов). Доминирующей оказалась концепция реляционных баз данных, представляющих собой системы взаимосвязанных таблиц, в которых хранятся записи, разбитые на поля (колонки, столбцы). Именно для работы с такими данными предназначены языки структурированных запросов.

Замечание 1

Имеет смысл говорить именно о языках, а не о языке SQL, поскольку его реализации для разных СУБД существенно различались и порой оказывались несовместимыми. Упорядочивание синтаксиса, приведение его к единым нормам произошло лишь с принятием стандарта SQL-92, но проблема несовместимости диалектов актуальна сих пор.

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

«Языки управления базами данных» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

NoSQL синтаксисы для управления базами данных.

В связи с бурным развитием в последние годы баз данных, построенных на нереляционных принципах, для управления ими появляются новые языки запросов и синтаксисы. Например, для управления БД Redis используется собственная система консольных команд.

Консоль управления БД Redis. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Консоль управления БД Redis. Автор24 — интернет-биржа студенческих работ

Наконец, следует отметить, что некоторые языки программирования позволяют работать с базами данных не прибегая к синтаксису SQL. Вот, например, как можно сделать выборку из таблицы с помощью языка VBA и библиотеки ADODB:

 ...
 ADCommand.CommandText = ";(&(ObjectCategory=person)(ObjectClass=user)(sAMAccountName=userid));name,mail;subtree"

 ...
 
 Set Recordset = ADCommand.Execute
 Do Until Recordset.EOF
 Debug.Print Recordset.Fields("name").Value
 Debug.Print Recordset.Fields("mail").Value
 Recordset.MoveNext
 Loop

Транзакции и принцип ACID

Важным понятием в SQL является транзакция.

Определение 1

Транзакция - последовательность инструкций, выполняемых в логическом порядке посредством клиентских запросов, внесение изменений БД.

Для надежной работы реляционных БД транзакции должны соответствовать принципу ACID (Atomicity — Атомарность, Consistency — Согласованность, Isolation — Изолированность, — Долговечность).

Атомарность гарантирует, что транзакция будет зафиксирована только целиком полностью. Если одна из инструкций в последовательности не может быть выполнена, то вся транзакция отменяется, происходит “откат” (rollback) к исходному состоянию.

Согласованность означает, что завершённая транзакция записывает в БД только допустимые результаты. Например, при переводе финансовых средств если деньги отправлены с одного счёта, они должны поступить на другой. В этом случае имеют место две разные транзакции, но одна без другой не имеет смысла.

Изолированность предполагает, что транзакции должны быть обособлены друг от друга. Это одна из самых трудных задач в реализации реляционных БД.

Долговечность гарантирует, что если получено подтверждение о завершении транзакции, то вызванные изменения не должны быть отменены из-за сбоя системы (например, отключения электроэнергии).

Примеры запросов на языке SQL

Рассмотрим некоторые инструкции SQL для создания БД "Учет книг в библиотеке". Создадим основную таблицу:

CREATE BOOKS (ID INT PRIMARY KEY, AUTHOR TEXT, TITLE TEXT NOT NULL);

В данной таблице три поля: числовой уникальный и непустой идентификатор, автор и заглавие книги (текстовые поля). Установлено ограничение: допускается занесение строк без указания автора (например, "Сборник кулинарных рецептов"), но не допускаются записи без заглавия (TITLE TEXT NOT NULL).

Если мы забыли добавить какую-то колонку (например, год выпуска книги), это можно исправить:

ALTER TABLE BOOKS
ADD COLUMN 
ISSUEYEAR INT;

Добавим в таблицу запись:

INSERT INTO BOOKS VALUES (1,'Манн Томас', 'Молодые годы короля Генриха IV', 1977);

Поскольку указанную книгу написал не Томас, а Генрих Манн, воспользуемся инструкцией UPDATE для исправления ошибки:

UPDATE BOOKS SET AUTHOR = 'Манн Генрих' WHERE ID=1;

Добавим еще одну книгу:

INSERT INTO BOOKS VALUES (1,'Манн Томас', 'Иосиф и его братья', 1982);

Произведём выборку:

SELECT AUTHOR, TITLE FROM BOOKS WHERE AUTHOR LIKE '%Манн%';

В данном случае будут выбраны обе книги, поскольку оператор LIKE означает, что нас интересуют все записи, где в поле "Автор" присутствует комбинация букв "Манн" в любой позиции строки.

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 01.02.2019
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot