11.5. Языки доступа к базам данных
Выделяют два типа языков доступа к базам данных:
1) язык описания данных – высокоуровневый язык, предназначенный для описания логической структуры данных;
2) язык манипулирования данными – совокупность конструкций, обеспечивающих выполнение базовых операций по работе с данными: ввод, модификацию и выборку данных по запросам.
Самыми распространенными языками доступа являются два стандартизированных языка:
1) QBE (Query by Example) – язык запросов по образцу, характеризующийся свойствами языка манипулирования данными;
2) SQL (Structured Query Language) – структурированный язык запросов, состоящий из свойств языков обоих типов.
Язык QBE был разработан на основе реляционного исчисления с переменными-доменами. Он помогает формировать сложные запросы к базе данных с применением заполнения предлагаемой системой управления базой данных запросной формы. Любая из реляционных СУБД обладает своим вариантом языка QBE. Достоинствами подобного способа задания запросов к БД являются:
1) высокая наглядность;
2) отсутствие необходимости указания алгоритма выполнения операции.
Структурированный язык запросов SQL появился на основе реляционного исчисления с переменными кортежами. Было разработано несколько стандартов данного языка, самыми известными из которых являются SQL-89 и SQL-92. Язык SQL применяется для выполнения операций над таблицами и данными, которые содержатся в этих таблицах, и некоторых сопутствующих операций. Он не применяется как отдельный язык и чаще всего служит частью встроенного языка программирования СУБД (например, FoxPro СУБД Visual FoxPro, ObjectPAL СУБД Paradox, Visual Basic for Applications СУБД Access).
Язык SQL ориентирован только на доступ к данным, поэтому его относят к средствам разработки программ и называют встроенным. Выделяют два основных метода использования встроенного SQL:
1) статический – характеризуется тем, что в текст программы помещены вызовы функций языка SQL, жестко включаемые в выполняемый модуль после компиляции. Изменения в вызываемых функциях могут производиться на уровне отдельных параметров вызовов с помощью переменных языка программирования;
2) динамический – отличается динамическим построением вызовов SQL-функций и интерпретацией этих вызовов при выполнении программы. Чаще всего применяется в тех случаях, когда в приложении вид SQL-вызова заранее неизвестен, и он выстраивается в диалоге с пользователем.