Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_Laboratornyi_774_praktikum.doc
Скачиваний:
28
Добавлен:
17.06.2021
Размер:
921.09 Кб
Скачать

Раздел V. Удаление таблицы из базы данных.

Синтаксис команды удаления таблицы (см. [1], стр. 970):

DROP TABLE table_name

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

Например, требуется удалить таблицу Товар. Сначала необходимо провести анализ, есть ли таблицы, для которых таблица Товар является родительской. Для этого можно, например, использовать системную хранимую процедуру sp_fkeys, позволяющую получить информации о связях между таблицами посредством первичных и внешних ключей, которая имеет следующий синтаксис (см. [1], стр. 979):

sp_fkeys [ @pktable_name = ] 'pktable_name'

[ , [ @pktable_owner = ] 'pktable_owner' ]

[ , [ @pktable_qualifier = ] 'pktable_qualifier' ]

{ , [ @fktable_name = ] 'fktable_name' }

[ , [ @fktable_owner = ] 'fktable_owner' ]

[ , [ @fktable_qualifier = ] 'fktable_qualifier' ]

/* Информация о связях родительской таблицы Товар с ее дочерними таблицами */

EXEC sp_fkeys 'Товар'

GO

Теперь ясно, что у таблицы Товар имеется одна дочерняя таблица – таблица Заказ. Та же информация подтверждается, если проанализировать с помощью процедуры sp_fkeys, какие родительские таблицы имеются у таблицы Заказ:

/* Информация о связях дочерней таблицы Заказ с ее родительскими таблицами */

EXEC sp_fkeys @fktable_name = 'Заказ'

GO

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

/* Удаление из базы данных таблицы Товар */

ALTER TABLE Заказ DROP CONSTRAINT FK_Заказ_Товар -- первая команда

DROP TABLE Товар -- вторая команда

GO

Примечание. Сначала была разорвана связь между таблицами Товар и Заказ путем удаления в последней ограничения внешнего ключа FK_Заказ_Товар. Только после этого была удалена таблица Товар.

Задание к работе

Предварительно выполните следующие действия.

  • Закройте (без сохранения данных) текущее окно Query и удалите базу данных Склад_ХХХ.

  • Загрузите сценарий из файла D:\Work\X7230ХХХ\script.sql и создайте базу данных Склад_ХХХ заново.

  • Обновите данные на панели Object Explorer и сделайте базу данных Склад_ХХХ видимой.

  • Закройте окно со сценарием script.sql и откройте новое пустое окно Query, предназначенное для формирования сценария выполнения задания к лабораторной работе.

Выборка данных из таблиц и представлений

1. Из таблицы Клиент выберите все строки, для которых значение поля ФИОРуководителя содержит подстроку «гор» и значение поля КодРегиона не принадлежит диапазону от 101 до 200 или неизвестно.

2. Из таблицы Поставщик выберите все строки, для которых значение поля УсловияОплаты не равно «Предоплата» или значение поля КодРегиона не попадает в интервал значений от 101 до 200 и не попадает в интервал значений от 301 до 400.

3. Из таблицы Регион выберите все строки, относящиеся к России (но не связанные с городом «Москва») или к Беларуси (но не связанные с городами «Минск» и «Гомель»).

4. Из таблицы Товар выберите все строки, связанные с валютой «Доллары США», для которых значение цены лежит в диапазоне от 200 до 800, а также все строки, связанные с валютой «Евро», для которых значение цены лежит в диапазоне от 100 до 500 или неопределено.

5. В таблице Заказ найдите все те строки, для которых значение поля Количество не определено или не попадает в интервал значений от 2 до 20. Однако на экран наряду с полями КодКлиента, КодТовара и КодПоставщика выведите также поля ИмяКлиента, Наименование и ИмяПоставщика, которые снабдят малоинформативные коды содержательными наименованиями.

6. В таблице Заказ найдите все строки, относящиеся к поставщикам из России или Украины, а из них, в свою очередь, выберите те строки, для которых с момента заказа прошло более 45 дней. Кроме того, в полученном наборе строк дополните столбцы КодТовара и КодКлиента столбцами Наименование и ИмяКлиента, расшифровывающими коды товаров и клиентов соответственно. Результирующий набор строк отсортируйте по полю ДатаЗаказа в порядке убывания, далее (для совпадающих значений), – по полю ИмяКлиента и, далее (если и здесь будут совпадения), - по полю Количество в порядке убывания.

7. Из представления Запрос1 выберите все те строки, для которых одновременно выполняются 2 следующих условия:

- значение поля Наименование содержит в себе подстроку «тер» или «тор» или же заканчивается буквой «а»;

- значение поля Количество попадает в диапазон значений от 5 до 10 или значение поля ЕдиницаИзм равно «штука» или «литр».

Обновление данных в таблицах

1. В таблице Клиент замените имя клиента «ГП ”Верас”» на «ГП ”Верас‑М”», а фамилию ее руководителя сделайте неопределенной.

2. В таблице Поставщик в поле УсловияОплаты установите значение «По договору поставки» для всех поставщиков, названия которых заканчиваются буквой «н», «т», «л» и не начинаются префиксом «ЗАО» или «ОАО».

3. В таблице Товар во всех записях, где цена от 100000 до 1000000 белорусских рублей, замените код валюты на «RUR», а цену уменьшите в 285 раз, а во всех записях, где цена больше 1000000 белорусских рублей, замените код валюты на «USD», а цену уменьшите в 9100 раз.

4. В таблице Заказ обновите поле СрокПоставки следующим образом: если дата заказа раньше 15 октября текущего года, то срок поставки будет равен дате заказа, увеличенной на 14 дней, однако, после 15 октября срок поставки должен быть больше даты заказа на 10 дней. Если же значение поля КодПоставщика не определено, то срок поставки должен быть равен дате заказа, увеличенной на 20 дней.

Удаление данных из таблиц

1. Добавьте приведенные ниже данные в соответствующие таблицы базы данных с помощью команды INSERT.

Таблица Валюта

КодВалюты

ИмяВалюты

ШагОкругления

КурсВалюты

GRV

Украинские гривны

0.01

250

Таблица Товар

КодТовара

Наименование

ЕдиницаИзм

Цена

КодВалюты

Расфасован

666

777

888

ПК-клавиатура

Разъем USB

Принтер Lexmark

штука

штука

штука

2630

135

12790

GRV

GRV

GRV

Да

Да

Да

Таблица Заказ

КодКлиента

КодТовара

Количество

ДатаЗаказа

СрокПоставки

КодПоставщика

4

5

3

5

666

777

888

666

17

5

14

9

по умолчанию

по умолчанию

по умолчанию

по умолчанию

по умолчанию

по умолчанию

по умолчанию

по умолчанию

345

234

456

345

Теперь удалите из таблицы Валюта строку с кодом валюты GRV (Украинские гривны).

Примечание. Предварительно проанализируйте свойства связей между указанными выше таблицами, в частности, разрешено или запрещено каскадное (CASCADE) удаление данных в таблицах Товар и Заказ. Свойства связей между таблицами задаются в команде CREATE TABLE или в команде ALTER TABLE.

Изменение структуры таблиц

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

2. Внесите изменения в нужные таблицы так, чтобы для выполнения задания, связанного с удалением строки из таблицы Валюта, требовалось бы обязательное удаление данные из всех трех таблиц (Заказ, Товар, Валюта).

Удаления таблиц из базы данных

1. Удалите из базы данных таблицу Регион.

2. Удалите из базы данных таблицу Поставщик.

3. Используя литературные источники, изучите самостоятельно команду удаления представления (VIEW) из базы данных и удалите существующее представление Запрос1.

Сохраните текущий сценарий в файле D:\Work\X7230ХХХ\script2.sql. Затем удалите базу данных Склад_ХХХ. Для этого в ее контекстном меню выберите команду Delete и затем в появившемся окне Delete Object установите флажок Close Existing Connections.