Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 19
Текст из файла (страница 19)
(максимум), UN. (уникальный)Часть 1. Основы94построениябазданныхи ALL. (все значения, в том числе повторяющиеся). Первые пять из них являются статистическими, а последние две определяют характер выборки: включать или не включать в выборку повторяющиеся значения.Функцию UN. можно присоединять к функциям CNT., SUM. и AVG.. Так, запись CNT.UN. означает количество только различающихся значений. В противоположность этому, запись CNT.ALL. будет означать количество всех значений.Очевидно, функции MAX.UN. и MAX.ALL.
дадут одинаковый результат.Пример 11. Использование функций.Пусть требуется вывести названия отделов, в которых работает более двухсотрудников. Этот запрос можно разделить на три операции: сгруппироватьсотрудников по отделам, подсчитать число сотрудников в каждом из отделови отобрать отделы, в которых работает более двух сотрудников.ЕМРФИООТДЕЛALL.EmploveeP. ToyCONDITIONSCNT.ALL. Employee > 2К о н с т р у к ц и я Toy означает операцию группирования(group-by), функция ALL.Employee ф о р м и р у е т множество (точнее мультимножество, таккак допускает д у б л и р о в а н и я ) всех имен по каждому из отделов, а записьCNT.ALL.Employee > 2 обеспечивает проверку логического условия.Здесь встретилась новая о п е р а ц и я ф о р м и р о в а н и я группы, которая записывается с помощью выделенного ж и р н ы м ш р и ф т о м элемента примера(в оригинале — двойное п о д ч е р к и в а н и е элемента п р и м е р а ) .Результирующая таблица имеет вид:ЕМРОТДЕЛигрушкикосметикаДругой пример.
Вывести названия отделов, в которых продаются толькотовары зеленого цвета.SALESTYPEОТДЕЛТОВАРP. ToyALL.InkТОВАРЦВЕТALLinkзеленыйОтветная таблица для данного запроса будет пустой.3. Реляционнаямодельданных95Вычисления в запросахС помощью запросов можно выбирать данные из таблиц и производитьвычисления. Вид вычисления задается с помощью выражения в шаблоне.В выражениях, помимо обычных арифметических операций (+, - , * , / ) искобок, могут использоваться встроенные функции: AVG., CNT., MAX.,MIN.hSUM..Примеры 12. Шаблоны с вычислениями.Пусть имеется таблица Е М Р 1 с полями имени ( Ф И О ) , размером зарплаты ( З А Р П Л А Т А ) и размером премиальных ( П Р Е М И Я ) .
Необходимо по каждому из сотрудников вывести имя и общую сумму зарплаты и премиальных.Для этого сформируем шаблон новой таблицы O U T P U T (заполнив строкуимени таблицы и имен ее полей) и укажем в ней вид вычислений. Свяжемэтот шаблон с шаблоном запроса к таблице ЕМР1.OUTPUTЕМР1ФИОСУММАP. EmployeeР. (£1+32)ФИОЗАРПЛАТАПРЕМИЯEmployeesi§2Поскольку операция суммирования выполняется по каждой строке исходной таблицы, такой тип вычислений можно назвать горизонтальным. Встроенные функции оперируют группами записей, поэтому можно считать, чтоони выполняют вертикальныевычисления.Для подсчета общего числа сотрудников следует составить такой запрос:ЕМР1ФИООТДЕЛР .CNT .ALL.
EmЭлемент примера Em здесь можно опустить.Если требуется подсчитать число сотрудников в отделе игрушек, следуетподготовить шаблон запроса вида:ЕМР1ФИООТДЕЛР .CNT .ALL. EmигрушкиЧтобы подсчитать число сотрудников в каждом из отделов (с выводом названий отделов), подготовим шаблон запроса вида:ЕМР1ФИООТДЕЛР .CNT .ALL. EmP. PepЧасть 1. Основы96построениябазданныхВ этом случае получим следующий результат:ЕМР1ФИООТДЕЛ2хозтовары3игрушки3косметика2канцтоварыВ шаблоне запроса мы применили операцию группирования (см. Пример 11).Операции вставки, удаления и модификацииВ отличие от рассмотренных операций, операции вставки, удаления и модификации приводят к изменению исходной таблицы.
Вид операции (вставка — I.,удаление — D., модификация — U.) записывается в шаблоне под именем таблицы, а константы и условные выражения указываются по тем же правилам,что и в операциях выборки.Примеры 13. Операции вставки, удаления, модификации.Для вставки в таблицу Е М Р нового сотрудника отдела игрушек с фамилией Деревянко Н.В., зарплатой 2000 и руководителем Белкиным Б.Н. нужносформировать шаблон вида:ЕМРФИОЗАРПЛАТАРУКОВОДИТЕЛЬОТДЕЛI.Деревянко Н.В.2000Белкин Б.Н.игрушкиПусть необходимо удалить всю информацию о сотрудниках отдела игрушек.
Шаблон соответствующего запроса будет выглядеть так:ЕМРФИОЗАРПЛАТАРУКОВОДИТЕЛЬОТДЕЛигрушкиD.Для модификации некоторого значения отдельного поля, например размера зарплаты сотрудника Белкина Б.Н., достаточно сформировать следующий шаблон:ЕМРФИОЗАРПЛАТАи.Белкин Б.Н.2100РУКОВОДИТЕЛЬОТДЕЛПустое поле означает, что оно не подлежит изменению. Если требуетсяизменить некоторое значение на «пустое», используется ключевое словоNULL.3. Реляционнаямодельданных97Чтобы повысить зарплату сотрудникам отдела игрушек на 10%, можносформировать шаблон запроса на модификацию следующего вида:ЕМРФИОи.ЗАРПЛАТАРУКОВОДИТЕЛЬОТДЕЛ1.1*£1siигрушкиРеализация этого запроса происходит в два этапа: сначала выбираются всезаписи со значением «игрушки» в поле О Т Д Е Л , а затем происходит изменение поля З А Р П Л А Т А отобранных записей на новое значение.Характеристикаязыков QBE современных СУБДОсновные отличия языков QBE современных С У Б Д отяЗыка, предложенного Злуффом М.М., как правило, сводятся к незначительным изменениям винтерпретации отдельных реляционных операций, введению дополнительных операций и изменению формы представления языка.Например, в системе Paradox for Windows вместо операции печати Р.
применен метод отметки выбираемых в запросной форме (шаблоне) полей. Дляэтого в начале каждого из полей запросной формы располагаются флажкидля выбора поля. Отмечая поля, пользователь может указать последовательность сортировки в ответной таблице. Д л я связывания нескольких запросных форм в один многотабличный запрос, а также в логических выраженияхусловий отбора записей применяются элементы примера.Наглядными являются запросные формы в Microsoft Access. Диалоговоеокно (рис.
3.9) при подготовке запросных форм состоит из двух частей: в верхней части располагается модель взаимосвязи исходных таблиц, а в нижней —остальная информация о запросе по каждому из полей (необходимость вывода значений, вид сортировки, условие отбора и т. д.).>Подготовка шаблона запроса выполняется пользователем с помощьюмыши. Так, связывание таблиц в запросе производится не элементами примеров, а «буксировкой» поля одной таблицы к полю другой таблицы. Еслитаблицы имели связь между собой, то система автоматически связызает всенаходящиеся в запросной форме таблицы. При этом каждая из связей помечается в соответствии с ее типом (на рис.
3.9 между таблицами Поставщики иТовары по полю Код Поставщика образована связь вида 1:М).Анализ современных С У Б Д позволяет предположить следующие направления развития языка QBE:• Повышение наглядности и удобства.• Появление средств, соответствующих новым возможностям СУБД, например, формулировка неточных или нечетких запросов, манипулирование большими объемами данных.• Использование новых типов данных (графических, аудио-, видео- и др.).4 Зак. 54198Часть1. Основыпостроения% Борей - [examl : запрос на выборку]Файл, ПравкаВидВставка*уданныхшшшJ g ]:обазXВсеаШЁШШШНввШШЩ!Поставщики|ЩКодПоставщикаsт •НазваниеОбращатьсяК: ДолжностьdТзвары:ik-жКодТовараМарка—1КодПоставщикаКодТипаЕдиницаИзмерения л ]1LJ/ ^ \. Поле: КодПоставщикаЙмя таблицы: Поставщики. Сортировка:Вывод на экран:Условие отбора:ГотовоВыражение!: [ToeмшшшштРис.
3.9. Вид запросной формы в Microsoft Access• Применение в ближайшем будущем ограниченного естественного языкаформулировки запросов.• В более отдаленной перспективе использование речевого ввода запросов.Принципиальные возможности для перехода к естественному языку общения и средствам речевого ввода есть уже сегодня. Это можно сделать, например,в виде надстройки над существующими СУБД при использовании словарей соответствия терминов ограниченного естественного языка и названий таблиц БД,полей таблиц, операций над данными и другими элементами QBE.^3 .
9 . Структурированный язык запросов SQLСтруктурированный язык запросов SQL основан на реляционном исчислении с переменными кортежами. Язык имеет несколько стандартов, наиболее распространенными из которых являются SQL-89 и SQL-92 (подраздел 9.3).3. РеляционнаямодельданныхОбщая характеристика99языкаЯзык SQL предназначен для выполнения операций над таблицами (создание, удаление, изменение структуры) и над данными таблиц (выборка, изменение, добавление и удаление), а также некоторых сопутствующих операций.SQL является непроцедурным языком и не содержит операторов управления,организации подпрограмм, ввода-вывода и т. п.
В связи с этим SQL автономно не используется, обычно он погружен в среду встроенного языка программирования С У Б Д (например, FoxPro С У Б Д Visual FoxPro, ObjectPAL С У Б ДParadox, Visual Basic for Applications С У Б Д Access).В современных С У Б Д с интерактивным интерфейсом можно создавать запросы, используя другие средства, например QBE.
Однако применение SQLзачастую позволяет повысить эффективность обработки данных в базе. Например, при подготовке запроса в среде Access можно перейти из окна Конструктора запросов (формулировки запроса по образцу на языке Q B E ) в окно сэквивалентным оператором SQL. Подготовку нового запроса путем редактирования уже имеющегося в ряде случае проще выполнить путем измененияоператора SQL. В различных С У Б Д состав операторов SQL может несколькоотличаться.Язык SQL пе обладает функциями полноценного языка разработки, а ориентирован на доступ к данным, поэтому его включают в состав средств разработки программ. В этом случае его называют встроенным SQL.
Стандарт языка S Q L п о д д е р ж и в а ю т с о в р е м е н н ы е р е а л и з а ц и и с л е д у ю щ и х я з ы к о впрограммирования: PL/1, Ada, С, COBOL, Fortran, M U M P S и Pascal.В специализированных системах разработки приложений типа клиент-сервер среда программирования, кроме того, обычно дополнена коммуникационными средствами (установление и разъединение соединений ссерверами БД, о б н а р у ж е н и е и обработка в о з н и к а ю щ и х в сети ошибоки т. д.), средствами разработки пользовательских интерфейсов, средствамипроектирования и отладки.Различают два основных метода использования встроенного SQL: статический и динамический.При статическом использовании языка (статическийSQL)в тексте программы имеются вызовы функций языка SQL, которые жестко включаются ввыполняемый модуль после компиляции.
Изменения в вызываемых функциях могут быть на уровне отдельных параметров вызовов с помощью переменных языка программирования.При динамическом использовании языка (динамический SQL) предполагается динамическое построение вызовов SQL-функций и интерпретация этихвызовов, например, обращение к данным удаленной базы, в ходе выполненияпрограммы.
Динамический метод обычно применяется в случаях, когда в приложении заранее неизвестен вид SQL-вызова и он строится в диалоге с пользователем.100Часть 1. Основы построениябазданныхОсновным назначением языка S Q L (как и других языков для работы с базами данных) является подготовка и выполнение запросов. В результате выборки данных из одной или нескольких таблиц может быть получено множество записей, называемое представлением.Представление по существу является таблицей, формируемой в результатевыполнения запроса. Можно сказать, что оно является разновидностью хранимого запроса. По одним и тем же таблицам можно построить несколько представлений.