Языки баз данных
.docxЯзыки баз данных
Для работы с базами данных используются специальные языки, называемые языками баз данных. Они обеспечивают пользователей БД языковыми средствами определения и манипулирования данными.
Язык БД имеет две составляющие:
– язык определения БД, по другому, язык определения данных – ЯОД;
– язык манипулирования данными – ЯМД.
ЯОД служит главным образом для определения логической структуры БД.
ЯМД содержит набор команд манипулирования данными, т.е. команд, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.
Запрос представляет собой программу, которая записывается на ЯМД – языке высокого уровня – и обеспечивает поиск данных в базе. Структура запроса в системах БД относительно проста, что позволяет легко его понимать, автоматически генерировать и оптимизировать. Запросы обычно рассматриваются как часть языка ЯМД.
Часто, особенно для реляционных БД, язык базы данных, и в том числе ЯМД, называют языком запросов БД.
Современные языки запросов можно разбить на две группы:
– процедурные языки запросов, позволяющие получить требуемый результат – данные из БД – на основе записи средствами языка программирования (С++, Java и др.) алгоритма достижения результата;
– декларативные или непроцедурные языки запросов, выражающие то, что должно быть возвращено из базы данных, т.е. требуемый результат без указания алгоритма его достижения.
Процедурные языки запросов, как правило, присущи СУБД с сетевой, иерархической и объектно-ориентированной моделью данных, а декларативные – реляционным и объектно-реляционным СУБД. Однако практически все реляционные и объектно-реляционные СУБД позволяют организовывать SQL-запросы через языки программирования типа C++ (встроенный SQL).
Обработку запросов пользователей осуществляет в СУБД процессор запросов, включающий компилятор ЯМД, интерпретатор ЯОД и подсистему обработки запросов. Процессор осуществляет всю работу по обработке запросов к БД и определению структуры БД.
В большинстве реляционных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных.
Исторически разработка языков запросов БД проводилась в основном в отделениях фирмы IBM и университетах США.
Язык SQL
Стандартным языком наиболее распространенных в настоящее время реляционных БД является декларативный язык SQL, разработанный в 1974 году фирмой IBM для экспериментальной реляционной СУБД System R.
SQL поддерживает следующие основные функции реляционной СУБД:
– средства ЯОД и ЯМД, т.е. позволяет определять схему реляционной БД и манипулировать данными;
– средства определения ограничений целостности БД;
– авторизацию доступа к объектам БД, которая осуществляется на основе специального набора операторов SQL. Суть доступа состоит в том, что для выполнения операторов SQL разного вида пользователь должен обладать различными полномочиями, в число которых входит полномочие на передачу всех или части полномочий другим пользователям, включая полномочие на передачу полномочий.
Программа на языке SQL представляет собой линейную последовательность операторов языка SQL. В стандарте языка нет операторов управления порядком выполнения запросов к БД (циклов, ветвлений, переходов).
Выражения SQL могут выполняться либо интерактивно, либо встраиваться в исходный код программы, написанной на языке высокого уровня. Любое выражение встроенного SQL, которое можно использовать интерактивно, можно использовать и в прикладной программе. Поэтому в разных СУБД он используется вместе с языками программирования высокого уровня.
В операторах языка SQL применяются:
– зарезервированные ключевые слова;
– идентификаторы (имена) таблиц и столбцов таблиц;
– логические, арифметические и строковые выражения, используемые для формирования критериев поиска информации в БД и для вычисления значений элементов результирующих таблиц;
– идентификаторы (имен) операций и функций, используемые в выражениях
Все ключевые слова, имена функций и, как правило, имена таблиц и столбцов записываются латинскими буквами. В языке SQL не делается различия между прописными и строчными буквами. Для конструирования имен таблиц и столбцов допустимо использовать буквы, цифры и знак «_», но первым символом имени обязательно должна идти буква. Запрещено использование ключевых слов и имен функций в качестве идентификаторов таблиц и имен столбцов.
Оператор, как правило, начинается с ключевого слова-глагола (например, SELECT – выбрать, CREATE – создать и т.п.) и заканчивается знаком «;».
Операторы записываются в свободном формате и могут занимать несколько строк. Допустимыми разделителями лексических единиц в операторах SQL являются:
– один или несколько пробелов;
– один или несколько символов табуляции;
– один или несколько символов новой строки.
Далее, при описании синтаксиса операторов языка SQL используются следующие соглашения:
– квадратные скобки не входят в число символов оператора и определяют необязательность элементов оператора, которые можно опустить при создании реального оператора;
– знак «|» разделяет альтернативные варианты и определяет возможность выбора из двух или нескольких вариантов синтаксической конструкции, сам знак не включается в оператор;
– прописными буквами записываются ключевые слова SQL;
– в фигурных скобках записываются повторяющиеся элементы, а сами скобки не включаются в оператор;
– в скобках <> записываются переменные нетерминальные символы, подлежащие замене в реальном операторе конструкцией из терминальных символов (идентификаторов, знаков операций, имен функций и т.п.), а сами символы <> не включаются в оператор.
SQL – очень объемный язык. Фундаментальные возможности SQL включают:
– запросы из одной таблицы;
– соединения нескольких таблиц;
– вложенные подзапросы;
– запросы с GROUP BY, HAVING и ORDER BY;
– запросы, включающие операции объединения / вычитания / пересечения результатов запросов.
Определение данных в SQL