С.Д. Кузнецов - Основы баз данных (1121716), страница 61
Текст из файла (страница 61)
Пока заметим, что гон эиспиегу — это запрос, результирующаи таблица которого состоит из одной строки. 282 Лекция 13 Характеристика оператора ЯЕсЕСТ и ссылки на таблицы раздела ЕНОМ операторе ТмЯЯят (тогда этим значением будет значение по умолчанию соответствующего столбца). Конструктор значения-таблицы производит таблицу на основе заданного набора конструкторов значений-строк: СаЬ)е ча1це сопеггцспог :;= ЧАЬоЯЯ гои ча1це сопасгцссог совва 1(зс Конечно, для того чтобы корректно построить таблицу, требуется, чтобы строки, производимые всеми конструкторами строк, были одной и той же степени и чтобы типы (или домены) соответствуюших столбцов являлись приводимыми.
Наконец, конструкция ТАЯТСЯ саЫе паве является сокрашенной Формой записи выражения Якьяст * УЯОМ саЫе паве. Ссылки на бедовые, представляемые и порождаемые таблицы Теперь мы можем завершить обсуждение разновидностей ссылок на таблицу в разделе уяом. Для удобства повторим синтаксические правила (опустив конструкции, рассмотрение которых отложено на следуюшие лекции или выходит за пределы материала данного курса): саЫе ге1егепсе: с= саЫе рг1вагу СаЫе ргппагу::= СаЫе ог с)песу паве [ [ АЯ ] согге1аг.'оп паве (с)ег)чес) со1овп 11ас) 1 с)ег1чеа СаЫе .', АЯ ] согге1аг(оп паве (с)ег(чео со1цвп 1)зс) ] СаЫе ог стаегу пате::= ( СаЫе паве ) с)песу пате ) с)ег1чес) саЫе::= (с)цегу ехргеаз оп) Итак, в самом простом случае в качестве ссылки на таблицу используется имя таблицы (базовой или представляемой) или имя запроса, присоединенного к данному запросу с помошью раздела иттм.
В другом случае (с)ег1чес) саЫе) порождаемая таблица задается выражением запроса, заключенным в круглые скобки. Явное указание имен столбцов результата запроса из раздела хттн или порождаемой таблицы требуется в том случае, когда эти имена не выводятся явно из соответствуюшего выражения запроса. Обратите внимание, что в таких случаях в соответствующем элементе списка раздела яясм должен указываться псевдоним (согге1ас1оп пале), потому что иначе таблица была бы вообще лишена имени. Можно считать, что выражение запроса вычисляется и сохраняется во временной таблице при обработке раздела ееом.
283 Основы бая данных Курс Возможно, некоторых читателей смутила рекурсивная природа синтаксических определений, приведенных в этом подразделе. Чтобы определить понятие ссылки на таблицу в разделе евон оператора выборки, который опирается на спецификацию запроса, нам пришлось ввести более общее понятие выражения запросов, в определении которого используется спецификация запроса. Да, действительно, многие синтаксические конструкции Я Н. определяются рекурсивно.
Но эта рекурсия никогда не приводит к зацикливанию. В частности, раскрупса рекурсии операторов выборки основывается на базовой, не выделяемой отдельными синтаксическими правилами форме, в которой в разделе ееом указываются только имена базовых таблиц. Представляемые таблицы, или представления (я! Е)М) Еще одним примером рекурсивности спецификаций языка Я[ЗЕ является то, что в конце этой лекции мы вынуждены прервать обсуждение оператора выборки и ввести понятие представляемой таблицы, или представления, которую можно использовать в операторе выборки наряду с базовыми таблицами. Только после этого можно будет считать обсуждение ссылок на таблицы в разделе Евон условно завершенным.
Итак, оператор создания представления в общем случае определяется следующими синтаксическими правилами; сгеаге у[ен ::= СЕЕАТЕ [ ЕЕССЕЯТУЕ ] УТЕХ СаЫе паве со1ивп паве совва 11яс ) АЯ с[негу ехргеяя(оп [ Х1ТН [ САЯСАРЕР ] РОСАР ] СНЕСК ОЕТ10Н Рекурсивные представления (такне, в определении которых присутствует ключевое слово неспеятуе) и необязательный раздел иттн снеск ОЕТТРН мы обсудим в следующих лекциях (пока лишь заметим, что этот раздел связан с особенностями выполнения операций обновления базы данных через представления).
Здесь мы кратко рассмотрим только простую форму представлений, определяемых по следующим правилам: сгеаге у(ен::= СНЕАТЕ у1ЕЖ СаЫе паве [ со1ппп паве совва 1(яс ) АЯ снегу ехргеяя)оп Имя таблицы, задаваемое в определении представления, существует в том же пространстве имен, что и имена базовых таблиц, и, следовательно, должно отличаться от всех имен таблиц (базовых и представляемых), созданных тем же пользователем. Если имя представления встречается в Лекция 13 Характеристика оператора ЕЕьРОТ и ссылки на таблицы раздела РВОМ разделе РВОМ какого-либо оператора выборки, то вычисляется выражение запроса, указанное в разделе йе, и оператор выборки работает с результирующей таблицей этого выражения запроса.' Явное указание имен столбцов представляемой таблицы требуется в том случае, когда эти имена не выводятся из соответствукяцего выражения запроса.
Как и для всех других вариантов оператора сеейте, для сеейте тгтеи имеется обратный оператор ОВОР чтем саь1е папе, выполнение которого приводит к отмене определения представления (реально это выражается в удалении данных о представлении из таблиц-каталогов базы данных). После выполнения операции пользоваться представлением с данным именем становится невозможно.*" Заключение В ходе чтения лекций, посвященных оператору ееееСт языка Я.Н, мне неоднократно случалось слышать жалобы студентов на сухость начального материала и отсутствие иллюстрирующих примеров.
Однако я не встречал ни одного учебного пособия по языку Я.П, основанного на примерах (среди многочисленных изданий типа «591. за 24 часа», «Я21. для чайников» и даже «Я.Н для идиотов»), который действительно давал бы представление об Я.П. как языке, а не служил инструкцией армейского типа.
Сложность организации оператора выборки не позволяет сразу начинать с полноценных примеров, а для демонстрации примеров промежуточных конструкций требуется создание неприемлемо громоздкого контекста. Поэтому могу лишь принести извинения за некоторую сухость этой лекции. С другой стороны, теперь мы уже вплотную подошли к тому этапу, на котором возможно использование иллюстраций, и в следующих лекциях их будет достаточно, хотя проиллюстрировать все интересные разновидности оператора еееест все равно не представляется возможным, поскольку число вариантов близко к астрономическому.
' По крайней мере, так это следует понимать в соответствии с семантикой представлений в языке зец при реальной обработке запросов над представлениями такая явная «материализация» представления выполняется крайне редко. Вместо этого используется техника подстановки тела представления в тело запроса с гарантией того, что результат модифицированного запроса будет в точности таким же, что и результат исходного запроса над материализованным представлением. Но это уже относится к тематике оптимизации ЗОЕ-запросов, выходягдсй за пределы этого курса.
*' Конструкция лыка чтдн в языке ЕО не подаержнвается. Ебб Основы бвз данных Курс Лекция 14. Язык баз данных ВОЬ1 предикаты раздела %НЕВЕ оператора ЗЕЬЕСТ В этой лекции мы продолжим рассматривазь механизм выборки данных языка БОЬ вЂ” оператора япьпст. Лекция целиком посвящена видам условных выражений, которые могут содержаться в разделе%НЕВЕ оператора выборки. Определяются и иллюстрируются на примерах запросов все виды преднматов, специфицированных в стандарте $()Ь: 1999.
Ключевые слова: раздел инкек оператора выборки, логическое выражение раздела инккк, предикат, предикат сравнения, сравнение символьных строк, сравнение битовых строк, сравнение значений типа дата-время, сравнение значений анонимного строкового типа, спецификация О1ят1нст, корреляционные подзапросы, полусоединение (вет)ю)п), уточненная семантика оператора выборки, преликат Ье(ууееп, предикат пц11, семантика предиката па11, предикат 1п, предикат 1(хе, раздел еЯСАРе, предикат в(в11аг, регулярные выражения преднката а(пй1аг, набор символов (гекц1аг с)тагасгег ве(), идентификатор набора символов (гекц!аг сйагзег 1д), функция Яцвятк1МЯ ... Я1м11АЕ ...
еЯсАРе, предикат ех(ага, предикат цп)г(це, предикат оуег1ара, предикат сравнения с квантором, предикат сравнения с квантором всеобщности, предикат сравнения с квантором существования, преднкат наг оп, тип сопоставления я1мрек, тип сопоставления Рлкт1АА, тип сопоставления РСЕЕ, предикат г)1ас(пег. Введение Конструкции оператора якекст языка БОЬ в значительной степени ортогональны. В частности, выбор способа указания ссылки на таблицы в разделе яком никак не влияет на выбор варианта формирования условия выборки в разделе инккк. Это полезное свойство языка позволяет нам абстрагироваться от обсуждавшегося в предыдущей лекции многообразия способов указания ссылки на таблицу и сосредоточиться на возможностях формирования запросов при использовании различных предикатов, допускаемых стандартом БОЬ:1999 в логических выражениях раздела инккк.
В стандарте Я Ь:1999 специфицированы 12 разновидностей предикатов, причем некоторые из них в действительности представляют собой семейства (например, под общим названием лредиката сравнения скрываются шесть видов предикатов). Набор допустимых предикатов в Я)Ь явно избыточен, но тем не менее в языке Я;Н имеется явная тенденция расширения этого набора. В частности, в Я;П:2003 в связи с введением генератора типов мультимножеств в дополнение ко всем разновидностям предикатов 286 Язык баа данных 80Ы и едикаты раздела УВНЕЯЕ оператора 8ЕьЕСТ Лекция 14 Б()1.:1999 появилось три новых вида предикатов: предикаты для проверки того, что заданное значение является элементом мультимножества (ненвей); что одно мультимножество входит в другое мультимножество (80вмгл.т18ет) и что мультимножество не содержит дубликаты (18 л 8ет). В этом курсе мы не приводим подробного описания этих видов предикатов по нескольким причинам: ° введение конструктора типов мультимножеств в стандарте ВО(:2003 не означает, что достигнута общая цель разработчиков стандарта ВО).
по обеспечению полного набора типов коллекций; по всей видимости, в будущих версиях стандарта появятся дополнительные конструкторы типов коллекций, и набор видов предикатов изменится; ° предикаты с мультимножествами трудно пояснять и иллюстрировать в отрыве от других объектно-реляционных средств языка ВО); ° включение подобного материала в данную лекцию заметно увеличило бы ее обьем и затруднило понимание более традиционных конструкций.