Встроенный SQL

Содержание

Слайд 2

Существуют два способа применения SQL в прикладных программах:
1. Встроенный SQL. При таком подходе

Существуют два способа применения SQL в прикладных программах: 1. Встроенный SQL. При
операторы SQL встраиваются непосредственно в исходный текст программы на базовом языке.
2. Интерфейс программирования приложений (API application program interface). При использовании данного метода прикладная программа взаимодействует с СУБД путем применения специальных функций.

Максим А. Сопов

Слайд 3


Процесс выполнения операторов SQL может быть условно разделен на 5 этапов:

Максим А.

Процесс выполнения операторов SQL может быть условно разделен на 5 этапов: Максим А. Сопов
Сопов

Слайд 4

Максим А. Сопов

Этап 1

Этап 2

Этап 3

Этап 4

План

Этап 5

Максим А. Сопов Этап 1 Этап 2 Этап 3 Этап 4 План Этап 5

Слайд 5

Синтаксический анализ оператора SQL:
На этом этапе проверяется корректность записи SQL -оператора

Синтаксический анализ оператора SQL: На этом этапе проверяется корректность записи SQL -оператора
в соответствии с правилами синтаксиса.
Проверка параметров оператора SQL:
На этом этапе проверяется корректность параметров оператора SQL: имен отношений, имен полей данных, привилегий пользователя по работе с указанными объектами. Здесь обнаруживаются семантические ошибки.

Максим А. Сопов

Слайд 6

Оптимизация оператора SQL:
СУБД проводит разделение целостного запроса на ряд минимальных операций и

Оптимизация оператора SQL: СУБД проводит разделение целостного запроса на ряд минимальных операций
оптимизирует последовательность их выполнения с точки зрения стоимости выполнения запроса. На этом этапе строится несколько планов выполнения запроса и выбирается из них один — оптимальный для данного состояния БД.

Максим А. Сопов

Слайд 7

Генерация плана выполнения запроса SQL:
СУБД генерирует двоичную версию оптимального плана запроса, подготовленного

Генерация плана выполнения запроса SQL: СУБД генерирует двоичную версию оптимального плана запроса,
на этапе 3. Двоичный план выполнения запроса в СУБД фактически является эквивалентом объектного кода программы.
Двоичная форма выполнения запроса SQL:
СУБД реализует (выполняет) разработанный план, тем самым выполняя оператор SQL.

Максим А. Сопов

Слайд 8

При объединении операторов SQL с базовым языком программирования должны соблюдаться следующие принципы:
-

При объединении операторов SQL с базовым языком программирования должны соблюдаться следующие принципы:
Операторы SQL включаются непосредственно в текст программы на исходном языке программирования. Исходная программа поступает на вход препроцессора SQL, который компилирует операторы SQL.
- Встроенные операторы SQL могут ссылаться на переменные базового языка программирования.
- Встроенные операторы SQL получают результаты SQL-запросов с помощью переменных базового языка программирования.

Максим А. Сопов

Слайд 9

При объединении операторов SQL с базовым языком программирования должны соблюдаться следующие принципы:
-

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

Максим А. Сопов

Слайд 10

Обычно курсоры используются для выбора из базы данных некоторого подмножества хранимой в ней информации. В каждый

Обычно курсоры используются для выбора из базы данных некоторого подмножества хранимой в
момент времени прикладной программой может быть проверена одна строка курсора. Курсоры часто применяются в операторах SQL, встроенных в написанные на языках процедурного типа прикладные программы.

Максим А. Сопов

Слайд 11

В соответствии со стандартом SQL при работе с курсорами можно выделить следующие основные действия:
создание или объявление

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

Максим А. Сопов

Слайд 12

Для работы с курсором добавляется несколько новых операторов SQL

Максим А. Сопов

Для работы с курсором добавляется несколько новых операторов SQL Максим А. Сопов

Слайд 13

Встроенный оператор SELECT должен создавать структуры данных, которые согласуются с базовыми языками программирования.

Максим

Встроенный оператор SELECT должен создавать структуры данных, которые согласуются с базовыми языками программирования. Максим А. Сопов
А. Сопов

Слайд 14

Во встроенном SQL запросы делятся на 2 типа:
Однострочные запросы, где ожидаемые результаты

Во встроенном SQL запросы делятся на 2 типа: Однострочные запросы, где ожидаемые
соответствуют одной строке данных. Эта строка может содержать значения нескольких столбцов.
Многострочные запросы, результатом которых является получение целого набора строк. При этом приложение должно иметь возможность проработать все полученные строки. Значит, должен существовать механизм, который поддерживает просмотр и обработку полученного набора строк.

Максим А. Сопов

Слайд 15

Первый тип запроса — однострочный запрос во встроенном SQL вызвал модификацию оператора

Первый тип запроса — однострочный запрос во встроенном SQL вызвал модификацию оператора
SQL, которая выглядит следующим образом:
SELECT [{ALL | DISTINCT}] <список возвращаемых столбцов>
INTO <список переменных базового языка>
FROM <список исходных таблиц>
[WHERE <условия соединения и поиска>]

Максим А. Сопов

Слайд 16

Для реализации многострочных запросов вводится новое понятие — понятие курсора или указателя

Для реализации многострочных запросов вводится новое понятие — понятие курсора или указателя
набора записей.
Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется и строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ.
:

Максим А. Сопов

Слайд 17

Оператор DECLARE CURSOR — определяет выполняемый запрос, задает имя курсора и связывает

Оператор DECLARE CURSOR — определяет выполняемый запрос, задает имя курсора и связывает
результаты запроса с заданным курсором. Этот оператор не является исполняемым для запроса, он только определяет структуру будущего множества записей и связывает ее с уникальным именем курсора. Этот оператор подобен операторам описания данных в языках программирования.

Максим А. Сопов

Слайд 18

Оператор OPEN дает команду СУБД выполнить описанный запрос, создать виртуальный набор строк,

Оператор OPEN дает команду СУБД выполнить описанный запрос, создать виртуальный набор строк,
который соответствует заданному запросу. Оператор OPEN устанавливает указатель записей (курсор) перед первой строкой виртуального набора строк результата.

Максим А. Сопов

Слайд 19

Оператор FETCH продвигает указатель записей на следующую позицию в виртуальном наборе записей.

Оператор FETCH продвигает указатель записей на следующую позицию в виртуальном наборе записей.
В большинстве коммерческих СУБД оператор перемещения FETCH реализует более широкие функции перемещения, он позволяет перемещать указатель на произвольную запись, вперед и назад, допускает как абсолютную адресацию, так и относительную адресацию, позволяет установить курсор на первую или последнюю запись виртуального набора.

Максим А. Сопов

Слайд 20

Оператор CLOSE закрывает курсор и прекращает доступ к виртуальному набору записей. Он

Оператор CLOSE закрывает курсор и прекращает доступ к виртуальному набору записей. Он
фактически ликвидирует связь между курсором и результатом выполнения базового запроса. Однако в коммерческих СУБД оператор CLOSE не всегда означает уничтожение виртуального набора записей. 

Максим А. Сопов

Слайд 21

Курсоры — удобное средство для формирования бизнес-логики приложений, но следует помнить, что

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

Максим А. Сопов

Слайд 22

Чтобы свести к минимуму количество требуемых блокировок, при работе интерактивных программ следует

Чтобы свести к минимуму количество требуемых блокировок, при работе интерактивных программ следует
придерживаться следующих правил:
Необходимо делать транзакции как можно короче.
Необходимо выполнять оператор завершения COMMIT после каждого запроса и как можно скорее после изменений, сделанных программой.

Максим А. Сопов

Слайд 23

Необходимо избегать программ, в которых осуществляется интенсивное взаимодействие с пользователем или осуществляется

Необходимо избегать программ, в которых осуществляется интенсивное взаимодействие с пользователем или осуществляется
просмотр очень большого количества строк данных.
Если возможно, то лучше не применять прокручиваемые курсоры (SCROLL), потому что они требуют блокирования всех строк выборки, связанных с открытым курсором.

Максим А. Сопов

Слайд 24

Использование простого последовательного курсора позволит системе разблокировать текущую строку, как только будет

Использование простого последовательного курсора позволит системе разблокировать текущую строку, как только будет
выполнена операция FETCH, что минимизирует блокировки других пользователей, работающих параллельно с вами и использующих те же таблицы.
Если возможно, определяйте курсор как READ ONLY.

Максим А. Сопов

Имя файла: Встроенный-SQL.pptx
Количество просмотров: 173
Количество скачиваний: 0