Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Запити.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
123 Кб
Скачать
☆

Вправа 9.6. Створення запиту на видалення

Розглянемо формування запиту на видалення записів про групи, де кількість студентів менше 5. Таблиці ГРУПА і СТУДЕНТ знаходяться відносно типу один-до-багатьох і між ними встановлений зв'язок по полю НГ і параметр забезпечення цілісності даних, але не встановлений параметр каскадного видалення зв'язаних записів. Для зв'язку таблиць СТУДЕНТ і УСПІШНІСТЬ по полях НГ і НС параметр каскадного видалення зв'язаних записів встановлений.

Зауваження

Якщо параметр каскадного видалення зв'язаних записів не встановлений, видалення записів обох таблиць за допомогою одного запиту неможливе. Якщо параметр каскадного видалення зв'язаних записів встановлений, достатньо одного запиту на видалення записів головної таблиці.

  1. Для того, щоб перевірити встановлені між таблицями в схемі даних зв'язку і її параметри, відкрийте схему даних. При необхідності приведіть їх у відповідність з умовами, сформульованими у вправі.

  2. Спочатку створіть Запит на вибірку (Select Query), в схему даних якого включіть обидві взаємозв'язані таблиці. З таблиці СТУДЕНТ потрібно видалити записи, а для поля таблиці ГРУПА задаються умови відбору.

  3. Потім в режимі конструктора перетворіть запит в Запит на видалення (Delete Query), вибравши на панелі інструментів тип запиту Видалення (Delete Query) або виконавши команду меню Запит | Видалення (Query | Delete Query). Після перетворення запиту в запит на видалення в його бланку з'являється рядок Видалення (Delete).

  4. Тепер приступайте до формування бланка запиту. Перемістіть символ зірочки (*) із списку полів таблиці СТУДЕНТ в бланк запиту. В рядку Видалення (Delete) в стовпці цього поля з'являється значення Из (From).

Зауваження

Якщо в запиті об'єднується дві або більш таблиць, що знаходяться відносно 1:М, то видалити можна тільки записи однієї з таблиць на стороні «багато».

  1. Щоб задати умови відбору записів, що видаляються, перемістіть за допомогою миші в бланк запиту поле КІЛ з таблиці ГРУПА. В рядку Видалення (Delete) під ім'ям цього поля з'явиться значення Умову (Where) Заповніть рядок Умова відбору (Criteria) для цього поля умовою < 5

  2. Для попереднього перегляду записів, що видаляються, натисніть на панелі інструментів кнопку Вид (View). Для повернення в режим конструктора запиту також використовуйте цю кнопку.

  3. Для видалення записів підлеглої таблиці СТУДЕНТ натисніть кнопку Запуск (Run) на панелі інструментів.

Зауваження

Якщо передбачається повторне використовування виконаного запиту, збережіть його.

Після видалення записів підлеглої таблиці приступайте до видалення записів головної таблиці. Модифікуйте запит. Видаліть з схеми запиту таблицю СТУДЕНТ.

9. Натисніть кнопку Запуск (Run). Записи головної таблиці ГРУПА будуть видалені.

Результати роботи запиту на видалення залежать від встановлених в схемі бази даних відносин між таблицями і параметрів цілісності. Оскільки заданий параметр Забезпечення цілісності даних (Enforce Referential Integrity) і параметр каскадне видалення зв'язаних записів (Cascade Delete Related Records) не встановлений, для видалення записів груп і пов'язаних з ними записів про студентів необхідно в запиті спочатку видалити записи підлеглої таблиці СТУДЕНТ і тільки тоді головної таблиці ГРУПА. Якби параметр каскадного видалення був заданий, то було б достатньо видалити записи головної таблиці ГРУПА, а зв'язані записи підлеглої таблиці СТУДЕНТ віддалялися б автоматично. Коли встановлений саме цей параметр, при видаленні записів таблиці СТУДЕНТ віддаляються і всі зв'язані записи підлеглої таблиці УСПІШНІСТЬ.

10. Перейдіть в режим SQL. Еквівалентна запиту на видалення інструкція DELETE буде записана таким чином:

DELETE СТУДЕНТ.*, ГРУПА.КІЛ

FROM ГРУПА INNER JOIN СТУДЕНТ ON ГРУПА.НГ = СТУДЕНТ.НГ

WHERE (((ГРУПА.КІЛ)<5));

Інструкція DELETE видаляє з таблиці записи, що задовольняють умові відбору, заданій в пропозиції where. Якщо в пропозиції from об'єднується дві або більш таблиць, що знаходяться відносно 1:М, то видалити можна тільки запису однієї з таблиць на стороні «багато» (СТУДЕНТ). Для того, щоб вказати, з якої саме таблиці повинні бути видалені записи, в список полів включається конструкція ім’я_таблиці.* (студент.*). В запиті на видалення, як і в запиті на вибірку, указується, як повинен проводитися відбір записів, але на відміну від останнього ці записи віддаляються.

Майстер перехресних запитів

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