Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭКТ / БДлаб1.doc
Скачиваний:
36
Добавлен:
16.04.2013
Размер:
108 Кб
Скачать

Утилита dbd

Утилиту Database Desktop (DBD) можно рассматривать как диалоговую оболочку СУБД. База данных представляет собой набор таблиц, хранящихся в одном или нескольких файлах.

Утилита DBD запускается из стартового меню командой Программы | Borland Delphi | Database Desktop или из главного меню системы Delphi командой Tools | Database Desktop. DBD может работать с файлами, в которых хранятся таблицы БД и запросы к БД по образцу или на языке SQL.

Главное меню утилиты DBD содержит пункты File, Edit, Tools, Window, Help.

В дополнительное меню пункта File входят команды для создания (New), открытия (Open) и закрытия (Close) файла, для задания рабочего (Working Directory) и личного (Private Directory) каталогов. Рабочий каталог имеет псевдоним WORK, личный каталог - PRIV. В личном каталоге сохраняются таблицы ответов на запросы и временные таблицы, содержащие, в частности, исключенные строки (записи).

Задание 3. Определить местонахождение рабочего каталога. Если рабочий каталог находится на сетевом диске, защищенном от записи, то указать каталог D:\DELPHI\DATAPRDX в качестве рабочего.

Дополнительное меню пункта Tools содержит команду Alias Manager, дублирующую функции утилиты BDE Administrator, относящиеся к созданию псевдонимов БД и изменению параметров БД.

Задание 4. С помощью команды Alias Manager определить местонахождение БД с псевдонимом DBDEMOS. Если эта БД находится на сетевом диске, защищенном от записи, то скопировать каталог DATA, в котором расположена БД, на устройство D в каталог DELPHI и задать для БД с псевдонимом DBDEMOS параметр PATH = D:\DELPHI\DATA.

Чтобы посмотреть содержимое таблицы, ее нужно открыть командой File|Open|Table или кнопкой Open Table. Появится диалоговое окно, в котором выбираются устройство (или псевдоним) и имя таблицы. После выбора таблицы и нажатия кнопки ОК появится окно, отображающее строки выбранной таблицы: в первой колонке окна указаны имя таблицы и номера строк (записей); во второй и последующих колонках, приведены имена и значения полей таблицы.

Задание 5. Ознакомиться с содержимым таблицы ANIMALS.DBF из БД с псевдонимом DBDEMOS.

Операции с таблицами

Дополнительное меню пункта Tools│Utilities содержит команды для операций с таблицами.

Команда Copy создает копию содержимого таблицы.

Задание 6. Скопировать из БД с псевдонимом DBDEMOS в БД с псевдонимом WORK таблицу типа dBASE ANIMALS.DBF и таблицы типа Paradox CUSTOMER.DB - покупатели, EMPLOYEE.DB - принявшие заказ служащие, ITEMS.DB - заказанные изделия, ORDERS.DB - заказы, PARTS.DB - поставки партий изделий, VENDORS.DB - поставщики изделий. При копировании таблиц типа DBF в окне Copy to необходимо явно указать этот тип после имени файла (путь к файлу не задавать).

Таблица ANIMALS.DBF содержит сведения о животных, а остальные таблицы хранят информацию о продаже снаряжения для морских путешествий.

Команда Info Structure отображает структуру выбранной таблицы, т.е. описание полей таблицы.

Задание 7. Отобразить на экране структуру всех скопированных таблиц и ознакомиться с содержимым полей (табл. 1 - 7).

Таблица 1

Структура таблицы ANIMALS.DBF (Животные)

N п/п

Поле

Тип

Размер

Содержимое

Индекс

1

Name

C

10

Название животного

+

2

Size

N

2

Размер

3

Weight

N

2

Вес

4

Area

C

20

Область обитания

5

BMP

B

Изображение животного

Индекс задает порядок сортировки строк таблицы.

Таблица 2

Структура таблицы СUSTOMER.DB (Покупатели)

N п/п

Поле

Тип

Размер

Первичный ключ

Содержимое

1

CustNo

N

*

Номер покупателя

2

Company

A

30

Название компании-покупателя

3

Addr1

A

30

Адрес 1

4

Addr2

A

30

Адрес 2

5

City

A

15

Город

6

State

A

20

Штат

7

Zip

A

10

Почтовый индекс

8

Country

A

20

Страна

9

Phone

A

15

Номер телефона

Окончание

N п/п

Поле

Тип

Размер

Первичный ключ

Содержимое

10

FAX

A

15

Номер факса

11

TaxRate

N

Ставка налога

12

Contact

A

20

Представитель компании

13

LastInvoiceDate

@

Дата последнего заказа

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

Таблица 3

Структура таблицы EMPLOYEE.DB (Служащие)

N п/п

Поле

Тип

Размер

Первичный ключ

Содержимое

1

EmpNo

I

*

Номер служащего

2

LastName

A

20

Фамилия

3

FirstName

A

15

Имя

4

PhoneExt

A

4

Добавочный номер телефона

5

HireDate

@

Дата приема на работу

6

Salary

N

Жалование

Таблица 4

Структура таблицы ORDERS.DB (Заказы)

N п/п

Поле

Тип

Размер

Первичный ключ

Содержимое

1

OrderNo

N

*

Номер заказа

2

CustNo

N

Номер покупателя

3

SaleDate

@

Дата продажи

4

ShipDate

@

Дата поставки

5

EmpNo

I

Номер служащего, принявшего заказ

. . .

. . .

. . .

. . .

. . .

. . .

21

AmountPaid

$

Цена заказа

Таблица 5

Структура таблицы ITEMS.DB (Заказанные изделия)

N п/п

Поле

Тип

Размер

Первичный ключ

Содержимое

1

OrderNo

N

*

Номер заказа

2

ItemsNo

N

*

Номер изделия в заказе

3

PartNo

N

Номер поставки партии изделий

4

Qty

I

Количество заказанных изделий

5

Discount

N

Скидка

Таблица 6

Структура таблицы PARTS.DB (Поставки партий изделий)

N п/п

Поле

Тип

Размер

Первичный ключ

Содержимое

1

PartNo

N

*

Номер поставки партии изделий

2

VendorNo

N

Номер поставщика

3

Description

A

30

Описание изделия

4

OnHand

N

Количество изделий в наличии

5

OnOrder

N

Количество заказанных изделий

6

Cost

$

Стоимость одного изделия

7

ListPrice

$

Цена одного изделия

Таблица 7

Структура таблицы VENDORS.DB (Поставщики)

N п/п

Поле

Тип

Размер

Первичный ключ

Содержимое

1

VendorNo

N

*

Номер поставщика

2

VendorName

A

30

Название компании-поставщика

3

Address1

A

30

Адрес 1

4

Address2

A

30

Адрес 2

5

City

A

20

Город

6

State

A

20

Штат

7

Zip

A

10

Почтовый индекс

8

Country

A

20

Страна

9

Phone

A

15

Номер телефона

10

FAX

A

15

Номер факса

11

Preferred

L

Имеет предпочтение

Задание 8. Дополнить схему взаимосвязи таблиц (см. рисунок) посредством первичных ключей (первичные ключи подчеркнуть).

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

CUSTOMER

ORDERS

EMPLOYEE

CustNo

. . .

. . .

OrderNo

CustNo

. . .

EmpNo

EmpNo

. . .

. . .

VENDORS

PARTS

ITEMS

?

?

?

Команда Restructure изменяет структуру таблицы в соответствии с изменением описания полей таблицы. Если таблица содержит некоторые данные, то эти данные преобразуются согласно сделанным изменениям, причем преобразование может привести к частичной потере данных.

Задание 9. Изменить структуру таблицы ANIMALS.DBF, уменьшив размер (Size) поля AREA до 15 символов.

Команда Rename изменяет имя таблицы.

Задание 10. Изменить имя таблицы ANIMALS.DBF на ANIMA.DBF.

Команда Sort сортирует строки (записи) таблицы. Если в исходной таблице определен первичный ключ, то при сортировке создается новая упорядоченная таблица, для которой нужно задать имя. Из списка Fields выбираются поля, по которым следует сортировать, и помещаются в список Sort Order. Порядок полей сортировки изменяется кнопками Change Order. Направление сортировки (по возрастанию или убыванию) для каждого поля задается кнопкой Sort Direction.

Опция Sort Just Selected Fields разрешает сортировку таблиц Paradox только по полям из списка Sort Order без учета значений других полей. Опция Display Sorted Table задает отображение отсортированной таблицы после нажатия кнопки ОК.

Задание 11. Отсортировать таблицу ANIMA.DBF в алфавитном порядке названий животных и по убыванию их веса. Результат сортировки поместить в таблицу AN1.

Отсортировать таблицу ANIMA.DBF по убыванию веса животных и в алфавитном порядке их названий. Результат сортировки поместить в таблицу AN2.

Сравнить результаты сортировки.

Задание 12. Отсортировать таблицу CUSTOMER.DB по названиям компаний-покупателей. Результат сортировки поместить в таблицу CUST.

Задание 13. Отсортировать таблицу CUST по названиям штатов. Обратите внимание, что в отличие от таблицы CUSTOMER таблица CUST не имеет первичного ключа!

Команда Empty удаляет все строки (записи) из таблицы, а команда Delete удаляет таблицу или файл.

Задание 14. Очистить таблицу AN2, а затем удалить таблицу AN2.

Команда Add объединяет содержимое одной таблицы с содержимым другой таблицы: A+BB. Имя исходной таблицы A указывается в окне Add records in, а имя результирующей таблицы B - в окне Add records in A to.

Если выбран режим Append, то записи из исходной таблицы A добавляются в результирующую таблицу B.

Задание 15. Объединить таблицы ANIMA и AN1: ANIMA+AN1AN1.

Если для таблиц определены первичные ключи, то при объединении в режиме Append строки (записи) с повторяющимися значениями первичных ключей в результирующую таблицу не добавляются.

Режимы Update и Append&Update действуют только для таблиц с первичными ключами.

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

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

Задание 16. Выполнить команду Restructure для таблицы CUST и отметить поле CustNo как первичный ключ. Для этого признак первичного ключа Key в поле CustNo обозначить звездочкой (*), нажав клавишу пробела. Сохранить изменения в структуре таблицы CUST.

Задание 17. Объединить таблицы CUSTOMER и CUST в режимах Append и Update: CUSTOMER+CUSTCUST.

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

При выполнении команды Add в режиме Update дополнительно создается временная таблица CHANGED со списком изменяемых строк результирующей таблицы.

Обе таблицы хранятся в личном каталоге PRIV.

Команда Substract вычитает содержимое одной таблицы из другой. Операция вычитания определена только для таблиц типа Paradox. В операции участвуют уменьшаемая или результирующая таблица A и вычитаемая или исходная таблица B: A-BA.

Имя исходной таблицы B набирается в окне Substract records in, а имя результирующей таблицы A - в окне Substract records in B from.

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

Если в таблицах определены первичные ключи, то из таблицы А удаляются строки, в которых значения первичного ключа совпадают со значениями первичного ключа в строках таблицы В.

Задание 18. Вычесть таблицу CUSTOMER из таблицы CUST (CUST-CUSTOMERCUST).

Управление просмотром таблицы

Для просмотра полей и строк таблицы используются полосы прокрутки, для выбора поля - щелчок мышью.

Задание 19. Выбрать таблицу ANIMA.DBF из WORK и ознакомиться со средствами, позволяющими управлять просмотром таблицы.

Изменить ширину колонок (столбцов) в таблице: курсор поместить в первую видимую строку таблицы на разделитель колонок, нажать левую кнопку мыши и переместить разделитель колонок в горизонтальном направлении влево или вправо.

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

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

Изменить положение колонки: курсор мыши установить на заголовок колонки; когда курсор примет форму прямоугольника, нажать левую кнопку мыши и переместить колонку в горизонтальном направлении влево или вправо. Переместить таким способом колонку BMP в таблице ANIMA.DBF на предпоследнее место.

Сдвинуть колонку на последнее место: щелкнуть мышью на любой строке сдвигаемой колонки и нажать клавиши CTRL-R. Сдвинуть таким способом колонку BMP в конец таблицы.

Блокировать прокрутку колонок: поместить курсор мыши на стрелку, расположенную слева над горизонтальной полосой прокрутки; когда курсор изменит форму, нажать левую кнопку мыши и перетащить стрелку на правую границу колонки, которая не должна прокручиваться, например на границу колонки SIZE. Теперь при прокрутке по горизонтали эта и лежащие слева от нее колонки будут оставаться на своих местах.

Сохранить характеристики просмотра таблицы командой Table|Table View Properties|Save, восстановить характеристики - Table|Table View Properties|Restore, удалить сохраненные характеристики - Table|Table View Properties|Delete.

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

Редактирование таблицы

Режим редактирования устанавливается командой Table|Edit Data или кнопкой Edit Data, а режим просмотра - командой Table|View Data.

Изменяемое поле выделяется щелчком мышью. Чтобы сделать выделенное поле доступным для изменения, следует еще раз щелкнуть мышью в этом поле.

Изменения, сделанные в строке, сохраняются при переходе к другой строке. Отменить изменения можно до перехода к другой строке командой Edit|Undo.

Задание 20. В таблице ANIMA.DBF изменить размеры и вес двух животных; вставить одну строку командой Record|Insert, а другую - нажатием клавиши Insert; удалить вставленные строки командой Record|Delete и нажатием клавиш CTRL-Delete; закрыть таблицу командой File|Close.

Использование запросов по образцу (QBE) для выборки данных из таблицы

Чтобы задать запрос по образцу, нужно выбрать команду File|New или File|Open и затем команду QBE Query или нажать кнопку Open Query.

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

Когда запрос сформирован, можно выполнить его нажатием клавиши F8, кнопки Run Query на инструментальной панели или командой Query|Run Query. DBD обрабатывает запрос и отображает результаты в таблице ANSWER.

Большинству запросов по образцу соответствует запрос на языке SQL, который можно увидеть в окне SQL Editor, нажав кнопку Show SQL на инструментальной панели. Закрыть это окно можно кнопкой вызова системного меню; при закрытии окна выдается запрос на сохранение SQL-запроса в файле.

Задание 21. Сформировать запрос на просмотр таблицы CUSTOMER.DB.

Использование отметок. Чтобы включить конкретное поле в таблицу ответов, нужно в окне Query поставить отметку (галочку) в этом поле. Если установить курсор мыши на маленьком окошке в интересующем поле и нажать левую кнопку мыши, то появится список возможных отметок:

 - выбор неповторяющихся строк и сортировка в порядке воз- растания;

- отмена выбора;

 + - выбор всех строк без сортировки;

  - выбор неповторяющихся строк и сортировка в порядке убывания;

 G - указание поля, по которому следует группировать строки;

поле в таблицу ответов не выводится.

Задание 22. Отметить поля Company и City, чтобы в таблице ответов строки сортировались: а - в алфавитном порядке названий компаний; б - в обратном алфавитном порядке названий компаний. С помощью команды File|Save As сохранить QBE-запросы в рабочем каталоге под именами QBE22a и QBE22b. Записать в отчет соответствующие SQL-запросы.

Задание 23. Отметить только поле State, чтобы выводились:

  • все строки;

  • только неповторяющиеся названия штатов.

Cохранить QBE-запросы и записать в отчет соответствующие SQL-запросы.

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

Задание 24. Вывести список компаний-покупателей, расположенных на Гавайях (State=HI). Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 25. Вывести список компаний-покупателей, расположенных на Гавайях (State=HI) или в Калифорнии (State=CA). Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 26. Вывести список компаний-покупателей, сделавших заказ в январе 1995 года. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 27. Вывести названия компаний-покупателей, начинающиеся на букву "B" и кончающиеся на "s". Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 28. Вывести список компаний-покупателей, у которых почтовый индекс от 90000 до 99990. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Вычисление и изменение значений полей. Значение поля вычисляется с помощью оператора CALC, записываемого в поле справа от окошка. Форма оператора CALC COUNT используется для подсчета количества значений в столбце. Вычисляемое выражение может содержать элемент образца (example element) - переменную, принимающую текущее значение поля данных. Элемент образца обозначается именем, перед которым набирается символ подчеркивания (символ подчеркивания не отображается, а элемент образца выделяется красным цветом). Элемент образца и оператор CALC разделяются запятой, например: _a,CALC _a+2.

Для изменения значения поля предназначен оператор CHANGETO. При использовании этого оператора все поля должны быть неотмеченными.

Задание 29. Подсчитать количество компаний-покупателей из каждого штата. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 30. Для всех компаний-покупателей вычислить ставку налога TaxRate, увеличенную на 2 долл., без внесения изменений в таблицу. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 31. Для всех компаний-покупателей изменить ставку налога TaxRate, увеличив ее на 1 долл., и внести это изменение в таблицу. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 32. Вывести список компаний-покупателей и новые ставки налога.

Вставка и удаление строк (записей). Для выполнения этих действий нужно нажать правую кнопку мыши, когда курсор установлен в первой колонке запроса под именем таблицы и из появившегося меню выбрать команду INSERT или DELETE.

Для INSERT в окне Query набираются значения полей вставляемой строки и нажимается кнопка Run Query.

Для DELETE в окне Query набираются условия, которым должны удовлетворять значения полей удаляемых строк, и нажимается кнопка Run Query.

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

Задание 33. Ввести в таблицу CUSTOMER несколько строк, указав TODAY в качестве значения поля LastInvoiceDate и 1, 2, 3 ... в качестве значения поля CustNo.

Cохранить первый QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 34. Из таблицы CUSTOMER удалить строки, соответствующие компаниям-покупателям, сделавшим заказы после 1 января 1998 года. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Удаленные строки помещаются в таблицу DELETED.DB, расположенную в личном каталоге PRIV.

Соединение таблиц. Можно задать запрос для нескольких связанных таблиц. Для этого предварительно таблицы нужно соединить по полям, содержащим однородную информацию,

Задание 35. Соединить таблицы CUSTOMER и ORDERS по полю CustNo (номер покупателя): на инструментальной панели нажать кнопку Add Table (пиктограмма таблицы с зеленым плюсом) для добавления таблицы ORDERS, затем кнопку Join Tables (пиктограмма из двух перекрывающихся таблиц) для задания операции соединения таблиц и щелкнуть мышью на поле CustNo в главной таблице CUSTOMER, а затем на поле CustNo в подчиненной таблице ORDERS. В каждом из полей появится выделенный красным цветом элемент образца join1.

После соединения таблиц можно ставить отметки в полях любой таблицы.

Задание 36. Вывести сведения о компаниях-покупателях, у которых цена заказа (поле AmountPaid) меньше 1000 долл. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 37. Соединить таблицы CUSTOMER, EMPLOYEE, ITEMS, ORDERS, PARTS, VENDORS в соответствии со схемой взаимосвязи таблиц, нарисованной при выполнении задания 8.

Задание 38. Вывести названия компаний-покупателей, фамилии служащих, оформивших заказ, и имена поставщиков заказанных изделий. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 39. Вывести названия компаний-покупателей и описания изделий, заказанных в количестве, меньшем 10. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 40. Вывести описания изделий и названия компаний-покупателей, заказы которых не могут быть выполнены (OnHand<OnOrder). Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Сортировка таблицы ответов ANSWER. Д ля формируемой таблицы ответов может быть задана сортировка нажатием кнопки Sort Answer Table. В появившемся диалоговом окне выбираются поля, по которым следует сортировать таблицу. После закрытия окна нажатием кнопки ОК для выполнения сортировки нажимается кнопка Run Query на инструментальной панели.

Задание 41. Упорядочить последнюю полученную таблицу ответов в алфавитном порядке следования описаний изделий. Cохранить QBE-запрос и записать в отчет соответствующий SQL-запрос.

Задание 42. Завершить работу с запросами по образцу командой File|Close.

Соседние файлы в папке ЭКТ