Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Bazy_dannykh_Uchebnik_novy

.pdf
Скачиваний:
132
Добавлен:
02.05.2015
Размер:
4.02 Mб
Скачать

Все строки в SQL вводятся с использованием команды модификации

UPDATE. В самой простой форме, UPDATE использует следующий синтаксис:

UPDATE <имя_таблицы> VALUES (<значение>, <значение> . . .);

В операторе UPDATE можно использовать ключевое слово WHERE.

Пример 57:

Изменить значения всех значений в столбце Рейтинг, а оператор – значения только конкретного столбца.

UPDATE ПОКУПАТЕЛИ

SET Рейтинг = 200;

Пример 58:

UPDATE ПОКУПАТЕЛИ

SET rating = 200

WHERE Покупатель = 1001;

Пример 59:

Выполнить изменения нескольких столбцов

UPDATE ПРОДАВЦЫ

SET ФИО = 'Гибсон', city = 'Бостон', comm = .10

WHERE Продавец = 1004;

Пример 60:

Увеличить значения данных в столбце Комиссия вдвое, для продавцов из города

Москва.

UPDATE ПРОДАВЕЦ

SET Комиссия = Комиссия * 2

WHERE Город = 'Москва';

Удаление строк из таблицы

Все строки в SQL вводятся с использованием команды модификации DELETE FROM. В самой простой форме, DELETE FROM использует следующий

синтаксис:

DELETE FROM <имя_таблицы> WHERE <усовие>;

Пример 61:

Удалить все строки таблицы

DELETE FROM ПРОДАВЦЫ;

Пример 62:

Удалить одну запись

91

DELETE FROM ПРОДАВЦЫ

WHERE Код = 1003;

92

8. Язык запросов QBE

Из вышеприведенного понятно, что для практической работы с языком SQL

необходимо программное обеспечение с текстовым интерфейсом, с помощью которого можно набирать сложные конструкции языка SQL. Возникла потребность в создании языка запросов, который имел бы простой и интуитивно понятный интерфейс.

Наиболее известной альтернативой SQL явился табличный язык запросов QBE (Query-By-Example), разработанный М.М.Злуфом. Ниже предлагается сокращенный вариант статьи.

Определение языка

Query-by-Example - высокоуровневый язык управления базами данных,

предоставляющий удобный и унифицированный стиль для построения запросов, обновления, определения и контроля базы данных.

Характеристика языка

Согласно философии Query-by-Example, от пользователя требуется весьма скромные знания для начала работы и для понимания и использования всего языка. Синтаксис языка прост, но тем не менее он охватывает широкий спектр сложных операций. Это достигается за счет использования одинаковых операций для извлечения,

манипулирования, определения и контроля. Операции языка должны подражать,

насколько возможно, ручному манипулированию таблицами, сохраняя тем самым простоту, симметричность и нейтральность реляционной модели. Формирование операций должно следовать мыслительному процессу пользователя, предоставляя тем самым свободу при их построении. Система должна динамически создавать и уничтожать таблицы базы данных, она должна также предоставлять пользователю возможности динамического определения предложений контроля и средства безопасности. Результаты различных психологических исследований показывают, что достаточно для инструктирования непрограммистов менее трех часов, после чего они могут формулировать довольно сложные запросы, которые в противном случае требуют от пользователя знания исчисления предикатов первого порядка.

Исходные данные

Возможности языка проиллюстрируем операциями над теми же самыми таблицами

ПРОДАВЦЫ, ПОКУПАТЕЛИ, ЗАКАЗЫ, которые были использованы для описания

возможностей языка SQL.

Принципы построения языка

ВQuery-by-Example фундаментальными являются две основные концепции.

Программирование осуществляется посредством двумерных таблиц-шаблонов. Это

93

достигается заполнением соответствующих полей таблицы в примере решения.

Проводится также различие между постоянным элементом и элементом примера.

Элементы примера (переменные) подчеркиваются, а постоянные элементы нет. Используя две эти концепции, пользователь может сформулировать широкий спектр запросов.

Рассмотрим уже встречавшееся отношение ПОКУПАТЕЛИ.

ПОКУПАТЕЛИ

Код

ФИО

Город

Рейтинг

Продавец

2001

Чернышевский

Москва

100

1001

2002

Добролюбов

В.Пышма

200

1003

2003

Белинский

Екатеринбург

200

1002

2004

Михайловский

Среднеуральск

300

1002

2006

Кривенко

Москва

100

1001

2008

Данилевский

Екатеринбург

300

1007

2007

Ткачев

В.Пышма

100

1004

Предположим, что необходимо распечатать фамилии всех покупателей и их рейтингов.

Предположим, что для выполнения запроса имеется шаблон в виде таблицы, в первую строку которой можно занести названия полей, в а остальные поля – некие параметры запроса – рисунок 21.

Рисунок 21. Интерфейс для QBE запросов

Рассмотрим таблицу ПОКУПАТЕЛИ, которая содержит в качестве столбцов (Код, ФИО,

Город, Рейтинг, Продавец).

Пример 63:

Простая выборка с множественным выводом. Напечатать всю таблицу ПОКУПАТЕЛИ. Сокращенное представление этого запроса.

ПОКУПАТЕЛИ ФИО ГОРОД РЕЙТИНГ

Р.

94

Здесь P. означает <напечатать>, и применяется ко всей строке.

Пример 64:

Предположим, что пользователь хочет вывести всех покупателей, которые живут в городе Москве. Пользователь вначале вводит название таблицы к которой будет осуществляться запрос, в поле имени таблицы: в данном случае имя таблицы -

ПОКУПАТЕЛИ. Затем может либо ввести заголовки столбцов, либо позволить системе сделать это автоматически. (Эта операция объясняется далее.) После этого пользователь формулирует запрос, осуществляя ввод, показанный на рисунке.

МОСКВА - это постоянный элемент, определяющий требуемое условие запроса.

Эта конструкция не подчеркивается. Если таблица содержит множество столбцов,

пользователь может вывести все необходимые, удалив предварительно ненужные столбцы и применив, оператор P. для всей строки, представляющей только оставшиеся столбцы.

ПОКУПАТЕЛИ ФИО ГОРОД

Р. МОСКВА

Пример 65. Простая выборка с упорядочением:

Простая выборка с упорядочиванием. Вывести фамилии и рейтинги всех покупателей в городе Москва в алфавитном порядке.

ПОКУПАТЕЛИ

ФИО

ГОРОД

РЕЙТИНГ

 

 

 

 

 

Р.AO(1)

МОСКВА

P.AO(2)

 

 

 

 

Здесь обозначение АО (Ascending Order) – в порядке возрастания, причем цифра после признака – номер в списке упорядочения. В примере данные будут сначала упорядочиваться по фамилии, затем по рейтингу. Для вывода информации в противоположном порядке используется характеристика DO. (Descending Order) – в

порядке убывания. Помимо указанных признаков в состав QBE входят UNQ. –

уникальный, и его противоположность ALL. Все системные операторы заканчиваются точкой.

Пример 66. Выборка с квалификаторами:

Выборка с квалификаторами и частичным подчеркиванием. Вывести фамилии покупателей из города Москва с фамилиями, начинающимся на «А».

ПОКУПАТЕЛИ ФИО ГОРОД

Р.AKE МОСКВА

95

Здесь после точки в операторе печати P стоит неподчеркнутая литера «А» - первая буква фильтра отбора для фамилии и следующий за ней подчеркнутый оператор

KE, обозначающий условие отбора текста. Пользователь может применять частичное подчеркивание в начале, середине или конце слова, предложения или параграфа, как в примере XPAY, означающем слово, предложение или параграф,

такие, что где-то в них содержатся буквы PA. Поскольку элементы примера могут быть пустыми, слова, предложения и параграфы, начинающиеся или заканчивающиеся буквами PA, также удовлетворяют этому условию. Возможность частичного подчеркивания полезна в том случае, когда хранимой информацией является предложение или текст, и пользователю необходимо найти все примеры,

содержащие определенное слово или корень. Если, например, необходимо найти все элементы со словом Texas, формулировкой запроса будет XTEXASY.

Пример 67. Выборка с квалификаторами и использованием связей:

Пусть к таблице ПОКУПАТЕЛИ в дополнение имеется связанная таблица ПРОДАВЦЫ.

ПРОДАВЦЫ

Код

ФИО

Город

Комиссия

1001

Иванов

Москва

0.12

1002

Петров

Екатеринбург

0.13

1004

Сидоров

Москва

0.11

1007

Плеханов

Н.Тагил

0.15

1003

Аксельрод

Первоуральск

0.10

Вывести все товары в алфавитном порядке фамилии все продавцов, которые продали товары покупателям из Москвы. Проблемы решает следующий запрос

 

ПОКУПАТЕЛИ

Код

ФИО

ГОРОД

 

 

 

 

 

 

 

_ID

 

МОСКВА

 

 

 

 

 

 

 

 

 

 

 

ПРОДАВЦЫ

Код

ФИО

 

 

_ID

P.AO

 

Здесь делается запрос из связанных таблиц. Таблицы связываются с помощью переменной _ID, которая должна принимать одинаковые значения для различных таблиц. В этом примере проиллюстрирована важность элементов примера.

Пример 68. Выборка связанных данных из одной таблицы:

Вывести фамилии продавцов, у которых комиссионное вознаграждение, выше, чем у Иванова, который поставляет товар в Москву.

96

ПРОДАВЦЫ

ФИО

Комиссия

 

P.

P.>S1

 

Иванов

S1

Запрос действует так: значение константы S1 при выполнении запроса становится равным строке текста «Иванов». Далее работает первая строка ограничений и выбираются те данные, у которых значение поля Комиссия больше, чем константа

S1. Порядок строк в примере несущественен: пользователь не обязан каким-либо образом структурировать запрос. Вместо этого существует возможность формулировать запрос в соответствии с тем, как пользователь его обдумывает.

Пример 69. Сложные запросы на основе расширения существующих:

Другим средством Query-by-Example является возможность формирования сложных запросов путем расширения существующих простых запросов. Такое расширение предыдущего примера, состоящее в добавлении дополнительного условия, приведено ниже.

 

ПРОДАВЦЫ

Код

ФИО

Комиссия

 

 

_ID

P.

P.>S1

 

 

 

Иванов

S1

 

 

 

 

 

 

 

ПОКУПАТЕЛИ

Код

ФИО

ГОРОД

 

 

 

 

 

 

 

 

_ID

 

МОСКВА

 

 

 

 

 

 

Формулировка этого запроса состоит в следующем: найти фамилии продавцов,

которые поставляют товар покупателям в Москве у которых комиссия выше, чме у сотрудника Иванова.

Пример 70. Выборка с использованием блока условий:

Вывести фамилии продавцов, у которых комиссия оставляет 0.11, 0.12, 0.13.

ПРОДАВЦЫ

ФИО

Комиссия

 

P.ПРОДАВЕЦ

= 0.11

 

P.ПРОДАВЕЦ

= 0.12

 

P.ПРОДАВЕЦ

= 0.13

Знак равенства в блоке условий является условием равенства, и его не нужно путать с оператором присваивания. Операторы присваивания подразумевают процедуры, а Query-by-Example - язык непроцедурный. Тем самым операторы присваивания недопустимы. Различные условия в блоке условий вводятся на разных строках и для печать результатов используется одна и та же константа ПРОДАВЕЦ, в результате чего над каждым ограничением выполняется операция логического И. Если в запросе помнять название константы, например

97

ПРОДАВЦЫ

ФИО

Комиссия

 

P.ПРОДАВЕЦ

= 0.11

 

P.ПРОД

= 0.12

 

P.ПРОДАВЕЦ

= 0.13

то будут отбираться данные по тем продавцам, у которых комиссия составляет

(0.11 И 0.13) ИЛИ 0.12.

Пример 71. Использование функции агрегатных функций:

Подсчитать общее количество покупателей в Москве.

ПОКУПАТЕЛИ ГОРОД

P.CNT.UN.МОСКВА

Порядок выполнения указания признаков в запросе следующий: P. – печать, CNT. –

подсчет количества, UN.- уникальных, МОСКВА – условие отбора.

Реализация языка запросов QBE в MS Access

Язык запросов QBE реализован в MS Access. Интерефейс языка запросов несколько отличается от предложенного Злуфом. Рассмотрим на примере учебной таблицы

ЗАДАЧИ и КОНТАКТЫ. Учебная таблица создается при открытии программы MS Access образом. Данные таблицы создаются при помощи шаблонов, доступных при начальной загрузке системы. Таблицы создаются пустыми, и для выполнения запросов следует внести в нее несколько записей.

Самым простым способом является создание запросов с помощью Мастера по созданию запросов. Но нас интересуют возможности создания запрсов, аналогичные QBE. Для задания запроса в Access следует перейти к объекту «Запросы» в окне базы данных. Для создания нового запроса следует щелкнуть по кнопке «Создать» - появится окно Новый запрос. Первым шагом при создании запроса является определение таблиц, которые содержат исходную информацию. Для добавления в запрос таблицы следует использовать кнопку «Добавить». Интерфейс запроса после выбора таблиц, которые будут в нем участвовать, показан на рисунке 22. Обратите внимание на то, что в качестве составляющих запроса можно использовать не только таблицы, но и другие запросы,

сохраненные ранее. Это дает практически неограниченные возможности для создания сложных запросов.

98

Рисунок 22. Интерфейс для создания запроса в Access 2007.

Далее необходимо выбрать поля и таблицы, которые будут участвовать в запросе.

Интерфейс для выбора полей показан на рисунке 23.

99

Рисунок 23. Интерфейс для выбора полей в запросе. (Access 2007).

Из рисунка 23 видно, что для создания запроса необходимо указать таблицу, из которой делается выборка, поля, которые будут отображаться в запросе, признак вывода полей на экран и фильтр (условие отбора) для отбора данных.

100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]