Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Рассмотрим операторы для программирования хранимых процедур.Содержание книги
Поиск на нашем сайте
· Create имя_процедуры (параметры) [return список выходных данных] тело End procedure - создание процедуры; · Execute procedure имя (аргументы)[into список переменых] -– выполнение процедуры, созданной заранее; · drop procedure имя – удаление хранимой процедуры; · define список переменных – позволяет объявить переменные, которые являются локальными в хранимой процедуре; · call имя (аргументы) into список переменных – позволяет вызвать другую процедуру; · переменная:=выражение – присвоение; · if условие then оператор [else оператор] end if – условный оператор; · операторы цикла for переменная:=целое1 to целое2 step целое end for
while условие тело end while
for each имя_курсора операторы end for each Среди операторов ТЕЛА используются следующие: Exit - позволяет выйти из цикла до его завершения; Continue – позволяет начать выполнение цикла, не заканчивая предыдущий шаг; System – позволяет выполнить команды ОС; Return – позволяет сформировать результаты и вернуть их из процедуры; Begin . – блок, часть пограммы, в которой могут быть объявлены . локальные переменные. end 4 вариант – сервер приложений. С помощью протокола API передается информация о том какие программы и в какой последовательности нужно выполнять. В технологии клиент-сервер есть специальные активные программы, которые называют триггерами. Триггер – это активная программа, которая не вызывается программистом, а активизирует сама себя в зависимости от условий, возникающих при обработке данных. · Create trigger имя событие_действие - создание триггера; · Drop trigger - удаление. Запись события: · Insеrt on имя_таблицы – наступает тогда, когда в таблицу заносится информация; · Delete on таблица – наступает при удалении из таблицы; · Update of список_полей on имя_таблицы - возникает при изменении заданных полей в указанной таблице. Действия бывают трех видов: · Before (оператор) – перед добавлением, удалением, изменением; · Foreach row (оператор) – для каждой строки таблицы; · After (оператор) после добавления, удаления, изменения. В триггерах есть возможность сослаться на одно и тоже поле до изменения и после: · Referencing old as имя – запомнить до изменения; · Referencing new as имя – запомнить после изменения; When (условие)(оператор) – задает дополнительные условия для работы с триггерами. Пример. Изменить статус поставщиков только в том случае, если новый статус не меньше старого и не больше 100%. Нужно создать триггер, который будет обновлять статус: Create trigger Sstat Update of статус on Поставщики Referencing old as c1 Referencing new as c2 Foreach row When (с1.статус >=с2.статус) Execute procedure error (с1.статус,с2.статус) When (с2.статус>100%) Execute procedure error1 (с1.статус,с2.статус) Внутренняя модель данных. Индекс – это таблица, состоящая из двух полей, первое поле – это ключ, второе поле – это ссылка на запись в БД с этим ключом индексации. Индекс позволяет выполнить две работы: · Выполнить сортировку файла не перемещая физически его записи; · Ускорить поиск информации. Пример. Файл а1:
Организуем индексацию по полю А1, индекс будет плотный, т.е. индексируются все значения ключа. Запишем файл упорядоченный по полю А1:
Создадим индекс второго уровня, для этого разбиваем индекс на группы по три записи:
В первом столбце записан старший ключ, во втором столбце младший ключ. Рассмотрим, например поиск записи с ключом I. Смотрим в последнюю таблицу и ищем где ключ больший I, это J, его адрес B4, теперь обращаемся ко второй таблице, находим тройку записей, у которой младший индекс B4, это тройка D,I,J, находим в ней I, смотрим какой она имеет адрес – A5, обращаемся в первую таблицу и находим запись с адресом А5. Индекс с инвертированными списками. Инвертированный список хранит список ключей для каждого значения где это значение встречается.
B-дерево. В-дерево – это сбалансированное дерево. Основной недостаток индексов в том, что трудно вносить изменения, а дерево упрощает внесение изменений, а сбалансированность позволяет ускорить поиск. В основе В-дерева лежат следующие аксиомы: · В-дерево порядка n содержит 2n ключей 2n+1 ссылку; · В –дерево растет от листьев к корню; · Путь от корня к листу содержит одно и тоже количество шагов; · Каждый узел заполняется не менее чем на половину, кроме корня. Пример. Пусть у нас есть дерево третьего порядка, с ключами 12, 8, 4, 9, 6, 13, 14, 16,100, 10. Приходит ключ 12, его заносим в корень
Приходит 4, места в корне нет, разбиваем на 2
Приходит 9, она больше 8, но меньше 12, 12 сдвигаем, перед ней записываем 9, приходит 6 она меньше 8, но больше 4, записываем ее после 4:
После того как придет 13, 14, 16, 100, 10 вид дерева будет следующим:
ЯЗЫК QUERY BY EXAMPLE (QBE) Введение Реляционный язык QBE разработан М. М. Цлуфом в научно-исследовательской лаборатории фирмы IBM. QBE похож на SQL тем, что в своем первоначальном варианте обеспечивал только средства для запроса, тогда как в последующие версии были включены операции запоминания и многие другие возможности. Общий уровень языка сходен с уровнем языка SQL, хотя существуют некоторые операции запроса, возможные в QBE и не имеющие аналога в SQL или в каком-либо другом языке. Более очевидное различие между языками SQL и QBE в том, что последний разработан главным образом для работы с терминала (дисплея). Всякая операция в QBE специфицируется с помощью одной или нескольких таблиц; каждая такая таблица строится на экране дисплея частично системой, частично пользователем. Поскольку операции задаются в табличной форме, то QBE имеет двумерный синтаксис. Большинство традиционных языков, наоборот, имеют линейный синтаксис. Подобно SQL, QBE был подвергнут целому ряду проверок его практических возможностей, давших очень обнадеживающие результаты. Операции выборки Действительно значительной особенностью QBE является использование примеров для спецификации запросов (а также всех других операций, хотя все время мы рассматриваем только выборку). Основная идея состоит в том, что пользователь формирует запрос, занося пример возможного ответа в соответствующее место пустой таблицы. Например, рассмотрим запрос: «Получить номера поставщиков, находящихся в Париже». Первоначально система выдает на экран пользователю полностью пустую таблицу. Пользователь, знающий, что ответ на запрос находится в таблице Поставщики, запишет Поставщики в качестве имени таблицы; тогда система ответит заполнением соответствующих имен столбцов. Теперь пользователь может сформировать запрос, заполняя две позиции в таблице, как показано ниже.
«P» означает «печать» (print); эта литера указывает цель запроса, т. е. значения результата, которые должны быть выданы. 7 являются «элементом-примером», т. е. примером возможного ответа на запрос; элемент-пример выделяется подчеркиванием. Париж (не подчеркнуто) есть константа. Этот запрос может быть интерпретирован следующим образом: «Напечатать все №поставщиков, такие, как, скажем, 7, для которых соответствующий город — Париж». Отметим, что в результирующем множестве или даже в исходном множестве не обязательно должно находиться именно 7 — элемент-пример является полностью произвольным, и мы могли бы с равным успехом использовать PIG или X, не изменяя смысла запроса. Элементы-примеры используются для установления связей между строками в более сложных запросах. Если же связи не нужны, как в простом запросе, приведенном выше, то можно полностью опустить элементы-примеры (так, что Р. 7 сократилось бы до «Р»), однако в общем случае для ясности мы будем их включать. Простая выборка. Получить номера всех поставляемых деталей.
По желанию пользователь может специфицировать возрастающее или убывающее упорядочение результата. Избыточные повторяющиеся значения всегда исключаются. Простая выборка. Получить полные данные о всех поставщиках.
Сокращенное представление того же запроса
Здесь оператор печати относится ко всей строке. Выборка по условию. Получить номера поставщиков, находящихся в Париже и имеющих статус >20.
Обратите внимание, как задается условие «>20». Вообще, таким же образом может быть использован любой из операторов сравнения =, <>, <, <=, =>, > (исключение; = обычно опускается, как в столбце город приведенной выше таблицы) Выборка по условию. Перечислить номера поставщиков, находящихся в Париже или имеющих статус >20 (или удовлетворяющих и тому и другому условию).
Условия, заданные в одной строке, рассматриваются как операнды операции «И». Для «ИЛИ», следовательно, оба условия необходимо задавать в разных строках. В сформулированном выше запросе фактически затребовано объединение всех номеров поставщиков, находящихся в Париже, и всех номеров поставщиков со статусом >20. Необходимо два разных элемента-примера, потому что, если бы мы дважды использовали тот же самый, это бы означало, что один и тот же поставщик должен быть в Париже и иметь статус >20. Когда запрос содержит более чем одну строку, как в данном примере, их можно располагать в любом порядке. Выборка по условию. Получить номера тех поставщиков, которые поставляют деталь 1 и деталь 2.
Здесь один и тот же элемент пример должен использоваться дважды; чтобы сформулировать запрос, нам необходимо две строки, так как нужно соединить операцией «И» два условия в одном и том же столбце. 8.2.6. Выборка с использованием связи. Получить имена поставщиков, поставляющих деталь 2.
Элемент-пример №X используется как связь между таблицами Поставщики и Поставки. Вообще говоря, такие связи используются в языке QBE там, где в языке SQL требуется вложенное отображение, а в реляционной алгебре—операция JOIN. (На самом деле №х в предыдущем примере также выполняло роль связи, но только связываемые строки находились в одной и той же таблице.) 8.2.7. Выборка с использованием связей. Получить имена поставщиков,
поставляющих по крайней мере одну деталь красного цвета.
Выборка с использованием отрицания. Получить имена тех поставщиков, которые не поставляют деталь 2.
Обратите внимание на оператор NOT () в строке таблицы Поставки. Запрос может быть интерпретирован следующим образом: «Напечатать имена таких поставщиков с номерами X, чтобы ни один поставщик X не поставлял деталь 2». Выборка с использованием связи внутри одной таблицы. Получить номера тех поставщиков, которые поставляют по крайней мере одну деталь, поставляемую поставщиком 2.
Выборка с использованием связи внутри одной таблицы. Получить номера всех деталей, поставляемых более чем одним поставщиком.
Этот запрос может быть интерпретирован как «Напечатать номера Х таких деталей, что деталь Х поставляется некоторым поставщиком X, а также некоторым поставщиком, отличным от X». Символ может быть еще записан как . Выборка из нескольких таблиц. Для каждой поставляемой детали получить номер детали и название города, из которого она поставляется. Результат этого запроса не является проекцией существующей таблицы, скорее, это есть проекция соединения двух существующих таблиц. Для того чтобы сформулировать такой запрос на языке QBE, пользователь должен сначала построить остов таблицы ожидаемого результата (т. е. таблицу с соответствующим количеством столбцов). Этой таблице и ее столбцам могут быть даны любые имена, какие только желает пользователь — они могут быть даже оставлены пустыми. Пользователь затем может сформулировать запрос, используя таблицу «результат» и две существующие таблицы так, как показано ниже.
Выборка, включающая ALL. Получить номера поставщиков, поставляющих все детали.
Выражение ALL. Х в таблице Детали относится ко всем номерам деталей, содержащимся в этой таблице. Выражение ALL.X в таблице Поставки относится ко всем номерам деталей, поставляемых поставщиком X. Так как эти выражения идентичны, то X должен быть поставщиком, который поставляет все детали. Между прочим, если столбец слишком узок для выражения, скажем, ALL.X, которое пользователь хочет в него записать, то система позволяет пользователю предварительно увеличить ширину столбца. Таким образом, каждая строка запроса может содержаться в одной строке экрана. Выборка, включающая ALL. Получить номера поставщиков, поставляющих по крайней мере все те детали, которые поставляет поставщик 2.
Выражение ALL<PX во второй строке этого запроса представляет множество всех номеров деталей, поставляемых поставщиком S2. Первая строка означает, что мы отыскиваем поставщиков, таких, как SX которые поставляют ALL.X и, возможно, еще и другие детали. (Точка означает, что X может вдобавок поставлять некоторую деталь, не принадлежащую множеству ALL.X) Квадратные скобки служат просто для того, чтобы отнести. и ALL.Х к первой строке. Выборка с использованием блока условия. Рассмотрим пример запроса из предыдущего пункта, но из результата исключим номер поставщика 2.
Иногда бывает трудно выразить желаемое условие в рамках таблиц запроса. В подобном случае QBE позволяет пользователю записывать условие в отдельный «блок условия», как это показано в приведенном примере. В данном конкретном случае, однако, требуемый результат можно было бы получить без использования блока условия путем простой замены P.X в исходном запросе на Р. 2 (2 не подчеркнуто). Выборка с использованием отрицания. Получить номера таких поставщиков, что никакой другой поставщик не имеет более высокого статуса.
Вторая строка данного запроса может быть прочитана следующим образом: «В таблице Поставки нет строки со статусом > T».
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-20; просмотров: 257; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.20.30 (0.012 с.) |