Теория и практика построения баз данных (1088289), страница 69
Текст из файла (страница 69)
Некоторые реализации 5ОГ, однако, могут не допускать исполиэования встроенных функций в качестве аргумента команды 5ЕТ. Для демонстрации массовых обновлений предположим, что название предмета поменялось с В0445 на В0564. В этом случае, чтобы предотвратить проблемы с целостностью, должны быть изменены как таблица ЗАПИСЬ, так и таблица ПРЕДМЕТ.
Помните, что массовые обновления могут представлять большую опасность. ! )ользователю дается огромная власть, которая прп правильном ее использовании позволяет быстро ньшолнить насущную задачу, а если ею распорядиться неи< рно, может привести к серьезным проблемам. ВС41. — это наиболее важный на сегодняшний день язык манипулирования реляцио<<нить<и данными. Он превратился в стандартный язык для обмена информацией между компьютерами, и популярность его продолжает расти. Операторы 5О1, д< йствуюшие на отдельную таблицу, — это операторы 5ЕЕЕСТ, 5ЕЕЕСТ с предложением Ч/НЕРЕ, 5ЕЕЕСТ с предложением БРООР ВУ и 5ЕЕЕСТ с предложениями БРООР ВУ и НАН1НБ.
В 5 О 1. также имеются встроенные функции СОПИТ, 50М, АЧБ, МАХ и МГН. Операции с двумя и более таблицами выполняются с помощью вложенных запросов, соединений и операторов ЕХ15Т5 и НОТ ЕХ15Т5. Вложенные запросы и соединения часто вьпюлпяют один и те же операции, но не являются полностью взаимозаменяемыми. Для вложенных запросов требуется, чтобы запрашиваемые а.< рибуты происходили из одной и той же таблицы, а в случае соедипешш это не «бязательно. С другой стороны, существуют типы запросов, которые можно реализовать с помощью вложенных запросов и операторов ЕХ15Т5 и НОТ ЕХ15Т5, но невозможно с помощью соединений.
Операторы 5ОГ. для модификации данных включают команды 1НБЕРТ, ОВЕЕТЕ и ОРОАТЕ, которые предназначены соответственно для вставки, удаления и изменения значений данных. В этой главе мы представили базовые команды 5О1 в стандартной форме, л в главах 13, 14 и 16 мы будем использовать эти команды для обработки базы данных с помощью коммерческих СУБД. В вопросах этой группы речь идет о следующих отношениях: ПРОДАВЕЦ (Имя, ПроцентКвоты, Зарплата) ЗАКАЗ (Номер, ИмяПонупателя, ИмяПродавца, Сумма) ПОКУПАТЕЛЬ (Имя, Город, ТипПромышленности) 326 Глава 9. Язык 80С Вопросы !группы 327 ,! Экземпляры этих трех отношений приведены на рис. 9.3.
Используя данные1 нз этих таблиц, напишите 5Я1-операторьк которые отображают или модифицируют данные, как того требуют приведенные ниже задания. Имя ПроцентКвоты Зарплата ПРОДАВЕЦ Номер ИмяПокупатепя ИмяПродавца Сумма ЗАКАЗ Тип Город Промышленности ИмяПокупатепя ПОКУПАТЕЛЬ Рис. 9.3. Данные для вопросов группы ! 1. Выведите суммы зарплаты для всех продавцов. 2. Выведите суммы зарплаты для всех продавцов, но опустите повторения.
3. Выведите имена продавцов, у которых процент квоты меньше 30%. 4. Выведите имена продавцов, у которых имеется заказ от фирмы АЬегпасЬу Сопзггцсйоп. 5, Выведите имена продавцов, зарплата которых больше 349 999, но меньше 3100 000. 6. Выведите имена продавцов, у которых процент квоты больше 49%, но мень- ше 60%. Используйте ключевое слово ВЕТФЕЕН. 28. Напишите 5С41.-оператор, удаляющий информацию а покупателе АЪегпагйу Сопзггцсйоп. 7. 8. 9. !О 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Выведите имена продавцов, у которых процент квоты больше 49%, но мень- ше 60%. Используйте ключевое слово С1КЕ. Вывелнте имена покупателей, жнвугцих в городе, название которого окан- ч иваете я на «С».
Вывелите имена и зарплаты продавцов, у которых нет заказа от фирмы АЪегпагйу Сопзггцсг1оп, в порядке возрастания заработной платы. Полсчитайте количество заказов. Подсчитайте количество различных покупателей, имеюгцих какой-либо заказ. Вычислите средний процент квоты для продавцов. Выведите имя продавца, у которого наибольший процент квоты.
Подсчитайте количество заказов у каждого продавца. Подсчитайте количество заказов у каждого продавца, учитывая только те заказы, в которых Сумма превышает 500. Выведите имена и проценты квоты для продавцов, имеющих заказ от фир- мы АЪегпагйу Сопзггцсгюп, в порядке убывания процента квоты (исполь- зуйте вложенный запрос). Выведите имена и проценты квоты для продавцов, имеющих заказ от фир- мы АЪегпагйу Сопзггцсг!оп, в порядке убывания процента квоты (исполь- зуйте соединение).
Выведите процент квоты для продавцов, имеющих заказ от покупателей из Мемфиса (используйте вложенный запрос). Выведите процент квоты для продавцов, имеюгцпх заказ от покупателей из Мемфиса (используйте соединение). Выведите тип промышленности и имена продавцов лля всех заказов от компаний, находящихся в Мемфисе. Выведите имена продавцов вместе с именами покупателей, сделавших за- казы у этих продавцов.
Включите в ответ имена продавцов, у которых нет заказов. Используйте запись, принятую в Мгсгозой Ассезз. Выведите имена продавцов, имеющих два заказа и более. Выведите имена продавцов и проценты квоты для тех из»их, которые имеют два заказа и более. Выведите имена и возраст продавцов, имеющих заказы от всех покупателей. Напишите 8Я1.-оператор, вставляющий новую строку в таблицу ПОКУПАТЕЛЬ. Напишите ВСЕ.-оператор, вставляющий новое имя и возраст в отношение ПРОДАВЕЦ (предполагается, что заработная плата не определена).
Напишите 5С41.-оператор, вставляющий строки в новую таблицу ПЕРЕ- ДОВИК (Имя, Зарплата), для включения в которуго продавец должен иметь заработную плату не меньше 3100 000. 328 Глава 9. Язык 60С Вопросы к проекту Р~гегЯЭГг 329 29. Напишите 5О(.-оператор, удаляющнй инфорьгацик~ обо всех заказах от АЬегпагйу Сопзггпсг(оп.
30. Напишите 5О1-оператор, изменяющий зарплату продавца по фамилии Джонс на $45 000. 31. Напишите 5О)--оператор, увеличивающий зарплату всех продавцов на 10г». 32. Предположим, что продавец Джонс поменял фаьгилшо на Паркс. Напишите 5О).-операторы, выполняющие необходимые изменения. Вопросы И группы 33. Установите Мгсгозой Ассеьз и откройте базу данных Хоггйтч(пг(. Используя средство Опегу Реяйп/501 Ч(етч, напишите 5ОТ--операторы для перечисленных ниже запросов и запустите их. 1) Перечислите все столбцы поставщиков.
2) Выведите атрибут СошрапуМагле для поставщиков, у которых этот атрибут начинается с «Меж м 3) Перечислите столбцы всех продуктов от поставщиков, атрибут Сол1рапуМагле которых начинается с «Мекг». Приведите ответы, использующие как вложенный запрос, так и соединение. 4) Выведите атрибуты йеогйег(ече( и Соцпт для всех продуктов.
5) Выведите атрибуты ЯеогйегСече( и Сопят для всех продуктов, у которых Яеогг)егЕече( превышает 1. 6) Выведите атрибуты Яеогг(егСече( и Свинг для всех продуктов, у которых Яеогг(егСече( превышает 1, от поставщиков, атрибут СоглралуМагле которых начинается с «Мечг».
Вопросы к проекту йгед0р Предположим, что фирма ЕйгеЖр создала базу данных со следующими таблицами; ПОКУПАТЕЛЬ (ПокупательСК, Имя, Телефон, ЭлектронныйАдрес) ГОРЕЛКА (СерийныйНомер, Тнп, Версия, ДатаИзготовлення) РЕГИСТРАЦИЯ (ПокулательСК, Серийный Номер, Дата) РЕМОНТ (НомерСчета, СернйныйНомер, Дата, Описание, Стоимость, ПокулательСК) Напишите 5О(.-операторы, выполняющие приведенные ниже задания. Пусть даты имеют формат ммддгггк 1. Выведите все данные из всех четырех таблиц. 2. Выведите список версий всех горелок.
3. Выведите список версий всех горелок типа «Р)гег(гчотч». 4. Выведите серийный номер и дату регистрации для продуктов, зарегистрированных в 2000 годч. 16. Выведите имена и адреса электронной почты всех покупателей, на которых зарегистрирована горелка типа «Ейгег(1чочъ. Используйте соединение. 17. Выведите имена покупателей, адреса электронной почты и даты регистра ции для всех покупателей, зарегистрированных в В(гег(Рр. 18. Выведите имена и адреса электронной почты покупателей, имеющих заре гистрированную горелку, но не сдававших ни одной горелки в ремонт.
19. Выведите имена и адреса электронной почты покупателей, имеющих заре- гистрированную горелку, но не сдававших данную горелку в ремонт. 5. 6 7 8 9 10 11 12 13 14 15 Выведите серийный номер и дату регистрации для продуктов, зарегистри- рованных в феврале. Используйте джокер «». Выведите серийный номер и дату регистрации для продуктов, зарегистри- рованных в феврале. Используйте джокер «'/«». Выведите список имен и адресов электронной почты покупателей, у кото- рых есть электронная почта.
Выведите список имен покупателей, не ггьгеюпгг«х электронной почты; от- сортируйте результаты в обратном алфавитном порядке. Определите максимальную стоимость ремонта горелки. Определите среднюю стоимость ремонта горелки. Определите количество всех горелок. Определите количество горелок каждого типа и выведите тип и количество. Выведите имена и адреса электронной почты всех покупателей, для кото- рых производился ремонт горелки на сумму более $50.
Используйте вло- женный запрос. Выведите имена и адреса электронной почты всех покупателей, на кото- рых зарегистрирована горелка типа «81гег(Ыотч». Используйте вложенный запрос. Выведите имена и адреса электронной почты всех покупателей, для кото- рых производился ремонт горелки на сумму более $50. Используйте со- единение. Функции приложения базы данными 331 Глава 10 Проектирование приложений баз данных Эта глава познакомит вас с фундаментальными принципами проектирования приложений баз данных. Сначала мы рассмотрим, какие функции выполняет приложение базы данных. Каждую из этих функций мы обсудим более подробно на примере приложения базы данных картинной галереи.
Идеи, представленные в этой главе, применимы в большей степени к приложениям баз данных, предназначенным для использования в тралиционных средах, наприыер >йг!пг!о>чз. В главах 14-16 эти идеи получат развитие в отношении приложений, использующих технологию Интернет. Прежде чем мы начнем, необходимо сделать одно пояснение, касаю>цееся терминологии. На заре технологии баз данных было легко указать границу между СУБД и приложением: приложения были отделю>ыми программами, которые вызывали СУБД.