Совместное использование SQL с языками обработки данных

Реляционный подход, позволяющий использовать одно выражение для манипуляции обилием строк в таблице, является более прогрессивным по сопоставлению с пошаговыми (одна запись за один раз) способами манипуляции данными обычных языков. Но, так как подразумевается, что SQL будет употребляться в огромных организациях, где употребляются и традици­онные языки обработки данных, то нужен Совместное использование SQL с языками обработки данных способ, позволяющий интег­рировать SQL-выражения в программки, написанные на обычных язы­ках. Таким способом является интегрированный SQL.

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

Интегрированный SQL. Набор выражений, позволяющих использовать SQL вместе с классическими языками программирования.

Базисный язык.Язык программ, в которые можно погружать SQL-выражения.

Приведем пример Совместное использование SQL с языками обработки данных интегрированной SQL-программы:

ЕХЕС SQL

DECLARE WORK_ASGNMNT CURSOR

FOR

SELECT *

FROM ASSIGNMENT

WHERE WORKER_ID = REQUESTED – WORKER_ID

END ЕХЕС

Эта программка может быть встроена в программку, написанную на Коболе в качестве базисного языка. 1-ая строчка (ЕХЕС SQL) и последняя строчка (END EXEC) - выражения-флаги; они означают, что строчки меж ними - SQL-программа. Программка на Совместное использование SQL с языками обработки данных Коболе, содержащая эту SQL-программу, пе­ред компиляцией будет обработана компилятором подготовительного прохода. Компилятор подготовительного прохода распознает выражения-флаги и подменяет их CALL-выражениями — вызовами подпрограмм СУБД, которые во время выполнения будут обрабатывать эту SQL-программу. Когда про­грамма на Коболе компилируется, компилятор игнорирует SQL CALL-выражения и Совместное использование SQL с языками обработки данных компилирует всю остальную программку.

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

Остальная часть нашего примера содержит выражение DECLARE CURSOR, определяющее курсор. Курсор - это разновидность файла, содер­жимое которого создается во время выполнения программки. Обратите вни­мание, что в определении курсора участвует выражение Совместное использование SQL с языками обработки данных SELECT. Фраза WHERE ссылается на столбец таблицы ASSIGNMENT (WORKER_ID) и оз­начает, что строчка должна быть выбрана, если значение WORKER_ID равно значению переменной в программке на Коболе (REQUESTED-WORKER-ID).

Никакие данные не будут выбраны до того времени, пока курсор не будет открыт отдельной командой Совместное использование SQL с языками обработки данных. Команда «открыть курсор»:

OPEN WORK_ASGNMNT

принудит СУБД выполнить SELECT-выражение, Отдельные строчки, по­мещенные в курсор в процессе выполнения команды OPEN, можно извле­кать с помощью команды FETCH, аналогичной команде READ (читать). Для обновления и удаления данных таблиц базы данных есть другие команды. Команда CLOSE (закрыть) удаляет данные из курсора, так Совместное использование SQL с языками обработки данных что его можно опять открыть командой OPEN и получить новые данные, отражаю­щие текущее состояние базы данных.

Курсор. Средство погруженного SQL хранения результатов SQL-запроса для предстоящей обработки.

Команда OPEN (открыть курсор). Выражение погруженного SQL, заставляющее СУБД обработать запрос курсора и записать итог в курсор.

Команда FETCH (извлечь). Команда, извлекающая Совместное использование SQL с языками обработки данных одну строчку из открытого курсора.

11. Определение представлений данных

Ранее в этой главе мы проявили, как в схеме базы данных определяются таблицы. Эти таблицы именуются базисными, так как они содержат ос­новные данные базы данных. Части этого набора базисных таблиц, также выведенную из их информацию, можно определять в представлениях базы Совместное использование SQL с языками обработки данных данных, которые также определяются в схеме базы данных.

Базисная таблица. Таблица, содержащая главные либо действительные данные.

Представление данных - это окно, через которое видна часть базы данных. Представления данных полезны для поддержания конфиденциальности методом ограничения доступа к определенным частям базы данных и для упрощения выполнения нередко применяемых запросов. К примеру, для того чтоб Совместное использование SQL с языками обработки данных сохранить конфиденциальность, мы можем сделать представление данных, показывающее всю информацию о работнике, не считая его ставки.

Представление данных. Определение ограниченной части базы данных.

CREATE VIEW B_WORKER AS

SELECT WORKER_ID, WORKER_NAME, SKILL_TYPE, SUPV_ID

FROM WORKER

B_WORKER в нашем примере - это имя вновь сделанного представле­ния данных Совместное использование SQL с языками обработки данных. За именованием представления данных может следовать перечисле­ние имен столбцов представления данных, заключенное в скобки. В нашем случае мы опустили имена столбцов, так что имена столбцов будут просто унаследованы из таблицы, откуда они взяты. Часть выражения после слова AS именуется спецификациейзапроса. В качестве спецификации может употребляться хоть какой Совместное использование SQL с языками обработки данных верно сформулированный запрос.

Спецификация запроса. Определение запроса, применяемого в определении представления данных, курсора либо в другой команде.

Система по сути не делает значения данных для B_WORKER до того времени, пока к нему не обращаются. В этот момент спецификация запроса производится, создавая B_WORKER из данных таблицы WORKER, сущест­вующих в момент Совместное использование SQL с языками обработки данных выполнения. Таким макаром, данные представления ди­намически обновляются с конфигурацией данных соответственных таблиц базы данных.

Представим, что нас нередко интересует информация об электриках: строения, на которых они назначены работать, и дата начала работы. Тогда нам подойдет такое представление данных:

CREATE VIEW ELEC_ASSIGNMENT AS

SELECT WORKER ID, BLDG_ID, START_DATE

FROM Совместное использование SQL с языками обработки данных WORKER, ASSIGNMENT

WHERE SKILL_TYPE = 'Электрик' AND

WORKER.WORKER_ID = ASSIGNMENT.WORKER_ID

При воззвании к представлению данных ELEC_ASSIGNMENT СУБД поначалу породит значения его данных. В нашей базе данных ELEC_ASSIGNMENT (ЭЛЕК_РАБОТА) будет смотреться последующим образом:

ELEC_A3SIGNMENT

WORKER _NAME BLDG_ID START_DATE

К.Фарадей 312 10.10

К.Фарадей 515 17.10

Х.Колумб Совместное использование SQL с языками обработки данных 435 08.10

Х.Колумб 460 23.10

В запросах можно использовать представления данных. Представим, что нас заинтересовывают электрики, работающие на здании 435.

Запрос: Кто из электриков назначен на здание 435 и. когда он должен начать работу?

SELECT WORKER_NAME, START_DATE

FROM ELEC_ASSIGNMENT

WHERE BLDG_ID = 435

Итог: X.Колумб 10.08

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

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

CREATE VIEW MAX_WAGE (SUPV_ID, MAX_HRLY_RATE) AS

SELECT SUPV_ID, MAX(HRLY_RATE)

FROM WORKER

GROUP BY SUPV_ID

Направьте внимание, что Совместное использование SQL с языками обработки данных в этом примере мы включили в определение имена столбцов представления данных. Они следуют конкретно за именованием представления данных MAX_WAGE (MAKC_CTABKA). В этом слу­чае имена столбцов необходимо непременно включать, потому что один из столбцов - итог вычисления интегрированной функции, и для него нет имени, кото­рое он Совместное использование SQL с языками обработки данных мог бы унаследовать.

Мы можем обращаться с запросом к этому представлению данных, чтоб найти, у кого имеются подчиненные, чья ставка превосходит за­данную сумму.

Запрос: У кого есть подчиненные, чья ставка превосходит 12 баксов?

SELECT SUPV_ID

FROM MAX_WAGE

WHERE MAX_HRLY_RATE > 12

Обрабатывая этот запрос, система поначалу выполнит спецификацию за­проса представления данных Совместное использование SQL с языками обработки данных и создаст такую таблицу:

SUPV ID MAX_HRLY_RATE

1311 15.50

1520 13.75

2920 10.00

3231 17.40

Потом она применит сам запрос. В итоге получится

SUPV_ID


sovremennaya-psihologiya-ee-zadachi-i-mesto-v-sisteme-nauk-referat.html
sovremennaya-religioznaya-antropologiya.html
sovremennaya-rol-kompyutera-v-arheologii-referat.html