В реляционных СУБД для выполнения операций над отношениями используются две группы языков, имеющие в качестве своей математической основы теоретические языки запросов, предложенные Э.Коддом:
- реляционная алгебра;
- реляционное исчисление.
Эти языки представляют минимальные возможности реальных языков манипулирования данными в соответствии с реляционной моделью и эквивалентны друг другу по своим выразительным возможностям. Существуют не очень сложные правила преобразования запросов между ними
билет 27 тема 3
1. характеристика языков запросов БД. Примеры.
В реляционных СУБД для выполнения операций над отношениями используются две
группы языков, имеющие в качестве своей математической основы теоретические языки
запросов, предложенные Э.Коддом:
реляционная алгебра;
реляционное исчисление.
Эти языки представляют минимальные возможности реальных языков манипулирования
данными в соответствии с реляционной моделью и эквивалентны друг другу по своим
выразительным возможностям. Существуют не очень сложные правила преобразования
запросов между ними.
В реляционной алгебре операнды и результаты всех действий являются отношениями.
Языки исчислений, в отличие от реляционной алгебры, являются непроцедурными
(описательными, или декларативными) и позволяют выражать запросы с помощью
предиката первого порядка (высказывания в виде функции), которому должны
удовлетворять кортежи или домены отношений. Запрос к БД, выполненный с
использованием подобного языка, содержит лишь информацию о желаемом результате. Для
этих языков характерно наличие наборов правил для записи запросов. В частности, к
языкам этой группы относится SQL.
Язык SQL предназначен для выполнения:
а) операций над таблицами (создание, удаление, изменение структуры);
б) над данными таблиц (выборка, изменение, добавление и удаление)
в) некоторых сопутствующих операций (управление доступом, управление индексами,
управление транзакциями и др.).
SQL является непроцедурным языком и не содержит операторов управления, организации
подпрограмм, вводавывода и т.п. В связи с этим SQL автономно не используется, обычно
он погружен в среду встроенного языка программирования СУБД (например, FoxPro
СУБД Visual FoxPro, ObjectPAL СУБД Paradox, Visual Basic for Applications СУБД
Access).
В современных СУБД с интерактивным интерфейсом можно создавать запросы, используя
другие средства, например QBE. Однако применение SQL зачастую позволяет повысить
эффективность обработки данных в базе. Например, при подготовке запроса в среде Access
можно перейти из окна Конструктора запросов (формулировки запроса по образцу на
языке QBE) в окно с эквивалентным оператором SQL. Подготовку нового запроса путем
редактирования уже имеющегося в ряде случае проще выполнить путем изменения
оператора SQL. В различных СУБД состав операторов SQL может несколько отличаться.
Язык SQL не обладает функциями полноценного языка разработки, а ориентирован на
доступ к данным, поэтому его включают в состав средств разработки программ. В этом
случае его называют встроенным SQL. Стандарт языка SQL поддерживают современные
реализации следующих языков программирования: PL/1, Ada, С, COBOL, Fortran, MUMPS
и Pascal.
В специализированных системах разработки приложений типа клиентсервер (данную
архитектуру мы рассмотрим позже) среда программирования, кроме того, обычно
дополнена коммуникационными средствами (установление и
разъединение соединений с серверами БД, обнаружение и обработка возникающих в сети
ошибок и. т. д.), средствами разработки пользовательских интерфейсов, средствами
проектирования и отладки.
Различают два основных метода использования встроенного SQL: статический и
динамический.При статическом использовании языка (статический SQL) в тексте программы имеются
фиксированные по структуре вызовы функций языка SQL, включаемые в выполняемый
модуль в процессе компиляции. Параметры запросов (обычно представляют константные
значения, с которыми сравниваются значения полей в таблицах), являющиеся переменными
языка программирования, позволяют добиться некоторой гибкости статических запросов.
При динамическом использовании языка (динамический SQL) предполагается
динамическое построение запроса в форме текстовой строки. Данная строка используется
как параметр для функции выполнения SQLзапросов, которая выполняет синтаксический
анализ строки запроса и формирует на его основе последовательность команд БД.
Динамический метод обычно применяется в случаях, когда в приложении заранее
неизвестен вид SQLвызова.
В результате выборки данных из одной или нескольких, таблиц может быть получено
множество записей, называемое представлением. Представление по существу является
таблицей, формируемой в результате выполнения запроса, которая существует
«виртуально» только до завершения выполнения программы.
Для удобства работы с представлениями в язык SQL введено понятие курсора. Курсор
представляет собой своеобразный указатель на набор записей в представлении,
обеспечивающий в каждый момент доступ лишь к некоторой небольшой части строк
представления. С помощью операторов перемещения курсора по записям можно получить
доступ ко всем строкам таблицы