Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 18
Текст из файла (страница 18)
Вид(длина и состав) элемента примера роли не играют: главное чтобы при использовании в нескольких местах шаблона он был одинаков. Таким образом,как элементы примера, в частности, можно использовать идентификаторыexample, х или у.Для указания системе необходимости включения в ответную таблицу тогоили иного поля используется «Р.», что означает «напечатать».3. РеляционнаяЕМРSALESмодельданных87ФИОЗАРПЛАТАРУКОВОДИТЕЛЬОТДЕЛКиселев В.М.1800Белкин Б.Н.хозтоварыГурский С.И.1600Томилов А.Н.игрушкиАндреева Е.А.2000Петров А.С.косметикаЛевин П.Г.2200Петров А.С.канцтоварыНосов А.П.1600Томилов А.Н.игрушкиГофман В.Э.2600Андреева Е.А.косметикаСорокина Т.В.1700Андреева Е.А.косметикаБелкин Б.Н.1800Петров А.С.хозтоварыСемин С.В.2200Левин П.Г.канцтоварыГригорьев А.Н.1900Томилов А.Н.игрушкиТомилов А.Н.2000Петров А.С.игрушкиОТДЕЛТОВАРканцтоварыSUPPLYТОВАРПОСТАВЩИКбумагаручкаPencraftхозтоварымылобумагаPencraftканцтоварыкарандашмылоProcter & GambleкосметикапомадакарандашFlicигрушкисамолетчернилаPencraftигрушкимашинадухиBeautexигрушкикуклачернилаFlicкосметикадухипосудаCremcoканцтоварычернилапомадаBeautexхозтоварыпосудасамолетSignalканцтоварыручкамашинаSignalкуклаSignalпосудаFlicручкаBeautexкарандашPencraftЧасть 1.
Основы88TYPEпостроенияТОВАРЦВЕТСТОИМОСТЬпосудабелый30помадакрасный17духибазданных42ручказеленый6карандашсиний2чернилазеленый4черниласиний3карандашкрасный2карандашсиний2Пример 1. Запрос на выборку.С учетом изложенного запрос на выборку всех зеленых товаров можнозаписать в следующем виде:TYPEТОВАРЦВЕТР. XXзеленыйСТОИМОСТЬСловесно запрос можно сформулировать следующим образом: «Вывести все товары XX, цвет которых зеленый».
В приведенном шаблоне элемент примера XX необязателен и его можно опустить. Элементы примера указываются обязательно призаписи логических условий, а также при связывании таблиц в запросах.Пустые колонки из шаблона можно удалять.Пример 2. Удаление колонок.У нас неиспользуемым столбцом является СТОИМОСТЬ. Исходя их этого, дляприведенного шаблона можно записать следующий эквивалентный шаблон:TYPEТОВАРЦВЕТР.зеленыйПосле заполнения шаблона для получения результата нажимается соответствующая клавиша, например < E n t e r > , и начинается выполнениезапроса.
Результатом выполнения приведенного запроса является следующая таблица:TYPEТОВАРручкачернила3. Реляционнаямодельданных89Рассмотрим основные возможности перечисленных выше типов операций,используемых в запросах.Выборка данныхПростая выборка. Примером простой выборки является запрос: «Вывести все возможные цвета товаров из таблицы TYPE».Пример 3. Простая выборка.Заполненный шаблон в этом случае будет выглядеть так:TYPEТОВАРЦВЕТСТОИМОСТЬР.Ответная таблица имеет единственный столбец ЦВЕТ, содержащий значения: белый, красный, пусто (значение не задано), зеленый и синий.
Дублируемые значения при этом пропадают.Если требуется вывести данные из нескольких полей исходной таблицы, вкаждом из соответствующих столбцов шаблона записывается «Р.». Занесение «Р.» во все столбцы шаблона можно заменить записью «Р.» в первом столбце шаблона под именем таблицы.Простая выборка с упорядочиванием.Д л я упорядочения выводимыхз н а ч е н и й по в о з р а с т а н и ю и по у б ы в а н и ю и с п о л ь з у ю т с я к о н с т р у к ц и и«АО.» и «DO.» соответственно. Если требуется в ы п о л н и т ь упорядочивание по нескольким столбцам, п р и м е н я ю т к о н с т р у к ц и и вида: «АО(1).»,«АО(2).».Выборка с квалификаторами (условиями). Выбор записей из исходной таблицы в общем случае может быть основан на: точном совпадении, частичном совпадении, сравнении.1. Точное совпадение задается вводом констант в соответствующих поляхшаблона, как в случае запроса по товарам зеленого цвета.2.
Частичное совпадениезадается с помощью элементов примера.В частности, д л я ф о р м у л и р о в к и запроса о выводе всех видов товаров, наз в а н и я которых начинаются с буквы «и», можно воспользоваться конструкцией «Р.ике», з а п и с а н н о й в поле Т О В А Р т а б л и ц ы T Y P E . Здесь: «Р.»задает вывод, «и» — константа, а «ке» — элемент примера, играющий рольпеременной.Используя элементы примера, можно задавать различные варианты частичного совпадения со значениями данных из таблиц: в начале «ике», в конце«ха», в середине «х!ох2» и в произвольном месте.Поскольку элементу примера сопоставим любой символ, в том числе ипустой (отсутствие символа), то условию частичного совпадения «х!ох2»удовлетворяют слова, не только имеющие символ «о» в середине, но начинающиеся и заканчивающиеся на «о».Часть 1.
Основы90построениябазданныхПример 4. Частичное совпадение.Шаблон запроса с выбором товаров синего цвета, в середине названий которых имеется буква «р», выглядит так:TYPEТОВАРР.хруЦВЕТСТОИМОСТЬсинийРезультат в этом случае будет следующий:TYPEТОВАРкарандашчернила3.
Условие сравнения записывается с помощью операций сравнения: равно (=),больше (>), меньше (<), больше или равно (>=), меньше или равно (<=), неравно (—1= или просто —•), не больше (—•>), не меньше (—•<).Пример 5. Условия сравнения.Запрос имен сотрудников, работающих в отделе игрушек и получающихзарплату больше 1800, выглядит так:ЕМРФИОЗАРПЛАТАР.>1800РУКОВОДИТЕЛЬОТДЕЛигрушкиРезультатом запроса является таблица вида:ЕМРФИОГригорьев А.Н.Томилов А.Н.В операциях сравнения можно использовать и элементы примера.Пример 6.
Сравнения с элементами примера.Ниже приведен вид шаблона запроса выборки имен и зарплат сотрудников, получающих больше, чем Левин П.Г. По-другому запрос можно сформулировать так: «Пусть Левин П.Г. получает зарплату в количестве s. Найтивсех сотрудников, получающих больше, чем s, и вывести их зарплаты».
Порядок строк в шаблоне несущественен.ЕМРФИОЗАРПЛАТАР.R> sЛевин П.Г.s3. Реляционнаямодельданных91Сотрудников, получающих больше Левина П.Г., в таблице ЕМР не оказалось (вероятно, таковым является Петров А.С., но из таблицы Е М Р намэтого не узнать). В подобных случаях результирующая таблица оказывается пустой:ЕМРФИОЗАРПЛАТАУсловия в запросе могут задаваться по одному или по нескольким столбцам. При этом происходит объединение отдельных условий по схеме логического И (AND).Пример 7. Объединение условий.Для формулировки запроса выборки имен и зарплат служащих, получающих больше Левина П.Г. и работающих в отделе игрушек, достаточнов предыдущую запросную форму в первую строку столбца ОТДЕЛ вставитьслово «игрушки».Запрос вида: «Найти имена и зарплаты служащих, получающих больше, чемБелкин Б.Н., и работающих в отделе, продающем ручки», выглядит следующим образом:ЕМРSALESФИОЗАРПЛАТАР.R> sБелкин Б.Н.sОТДЕЛТОВАРdepartmentручкаРУКОВОДИТЕЛЬОТДЕЛdepartmentРезультатом выполнения этого запроса будет таблица вида:ЕМРФИОЗАРПЛАТАЛевин П.Г.2200Семин С.В.2200Здесь элемент примера department связывает две исходные таблицы пополю ОТДЕЛ, а элемент примера s используется для связи условий выборав рамках одной исходной таблицы ЕМР.Пример 8.
Запрос, в шаблоне которого имеются две связи.Пусть необходимо найти всех служащих, получающих больше своих руководителей. Этот запрос с помощью элементов примеров можно сформулировать так: «Вывести всех служащих, чьи руководители являются head и ктоЧасть 1. Основы92построениябаз данныхполучает больше, чем s, где s — зарплата head». Шаблон соответствующегозапроса имеет следующий вид:ЕМРФИОЗАРПЛАТАРУКОВОДИТЕЛЬР.> sheadheadsОТДЕЛЗдесь элемент head используется для связи руководителя в первой строке шаблона и имени из второй строки, а элементу применяется для сравнения зарплат.Для нашего примера результирующая таблица окажется такой:ЕМРФИОГофман В.Э.В качестве условия выбора записей из таблиц можно использовать операцию отрицания.Пример 9.
Отбор с операцией отрицания.Пусть необходимо вывести все отделы, продающие товары, не поставляемые компанией Pencraft. Этот запрос можно перефразировать: «Вывести названия отделов,продающих товары t, такие, что компания Pencraft не поставляет товары t».SALESSUPPLYОТДЕЛТОВАРР.tТОВАРПОСТАВЩИК-л tPencraftОтветная таблица для сформулированного запроса имеет вид:SALESОТДЕЛхозтоварыкосметикаигрушкиВ случаях, когда условия отбора записей для выборки представляют большиевыражения, которые неудобно или трудно задать в шаблоне, можно использоватьблок условий.
Он по виду напоминает пустой шаблон с одним полем и именемCONDITIONS. Блок условий предназначен для записи логических выражений.Записанные в одном шаблоне логические выражения, в общем случае, могут включать в себя операции логического умножения (операция AND) илогического сложения (операция OR).3. Реляционнаямодельданных93Пример 10. Использование блока условий.Шаблон запроса вывода фамилий сотрудников, чья зарплата составляетот 2000 до 2500, но не равна 2300, будет выглядеть так:ЕМРФИОЗАРПЛАТАP. Jon>2000Jon<2500Jon->2300Используя блок условий с явным заданием операции AND (символ &),этот же запрос можно сформулировать проще:ЕМРФИОЗАРПЛАТАР.sCONDITIONSs_= (>2000 & <2500 & -.2300)Шаблон запроса вывода фамилий сотрудников, чья зарплата составляет2000, 2300 или 2600, можно сформировать так:ЕМРФИОЗАРПЛАТАP.
Jon2000Р. Мак2300P. Nik2600В каждой из строк шаблона используются различные элементы примера, и поэтому условия действуют независимо. С помощью блока условий, в котором операция OR (символ |) задана явно, этот же запрос будет выглядеть более наглядно:ЕМРФИОЗАРПЛАТАР.sCONDITIONSs_= (2000 | 2300 | 2600)При записи логических выражений на языке QBE могут применятьсявстроенные функции, такие как: CNT. (счетчик или количество), SUM. (сумма), AVG. (среднее), MIN. (минимум), МАХ.