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

9.1. Створення представлень

Представлення (VIEW ) – це віртуальні таблиці. На відміну від звичайних таблиць, які містять дані, представлення містить запит, який демонструє дані динамічно при зверненні до нього. Представлення не має реальних стовпців чи даних, інакше це була б таблиця, яку потрібно кожен раз оновлювати при внесенні нових об’єктів.

Нижче наведено можливі переваги при використанні представлень:

  • Можливість багаторазового використання SQL запитів.

  • Спрощення використання складних SQL-запитів. Після того, як запит створено, його можна легко використовувати в інших запитах, не занурюючись безпосередньо в деталі основного запиту.

  • Можливість надання доступу лише до частини інформації з таблиць (при адмініструванні).

  • Можливість змінювати форматування і представлення даних.

  • Представлення можуть повертати дані відформатовані і упорядковані по іншому, ніж в таблицях, що лежать в їх основі.

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

  • імена представлень повинні бути унікальні, ім’я нового представлення не повинно співпадати з іменем іншого представлення, чи звичайної таблиці, які вже існують в даній БД;

  • для створення представлень, користувач повинен мати відповідні права;

  • представлення можуть бути вкладені – запит, що міститься в представленні може брати дані з іншого представлення;

  • представлення не можуть мати індексів чи тригерів;

  • представлення можуть використовуватися разом з таблицями, наприклад, можна створювати конструкцію SELECT, яка містить об’єднання (JOIN) представлення з таблицею.

  • Представлення створюються за допомогою конструкції CREATE VIEW:

CREATE VIEW <назва_представлення> AS SELECT …

Щоб знищити представлення, використовується конструкція DROP. Синтаксис її простий:

DROP VIEW <назва_представлення>

Щоб змінити представлення, можна використати DROP, а потім знову CREATE. Або використати конструкцію CREATE OR REPLACE VIEW, яка створить представлення, якщо його ще немає, чи виконає заміну, якщо представлення з таким іменем вже існує.

Рис.9.1. Структура та вміст представлення постачальник_товар

9.2. Керування транзакціями

Транзакція – це сукупність однієї або декількох SQL-інструкцій, що має початок і кінець. Наприкінці транзакції відбувається або її скасування, або завершення.

Скасування транзакції називається відкатом (rollback), тому що відбувається послідовне скасування всіх зроблених змін. Завершення транзакції називається фіксацією (commit). Транзакції реалізуються шляхом ведення журналу всіх змін, внесених у базу даних у ході кожної транзакції. Коли відбувається відкат, СКБД звіряється з журналом і скасовує всі зміни. Завдяки журналу легко можна відновити погоджений стан бази даних у випадку збою. Транзакції з'явилися в MySQL порівняно недавно. Вони підтримуються для таблиць розширених типів, таких як InnoDB BerkeleyDB і Gemini. Варто відзначити, що в багатьох ситуаціях транзакції не потрібні, тому що табличних блокувань буває цілком достатньо. Internet-магазину потрібна така ж цілісність бази даних, як і в банку, тільки інтенсивність трафіку значно нижча. У цій ситуації можна користуватися табличними блокуваннями.

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

MySQL – конструкція, яка вказує на початок транзакції:

START TRANSACTION

MySQL – команда ROLLBACK дозволяє відмотати (відмінити) MySQL команди, так як в цьому фрагменті:

SELECT * FROM <назва_таблиці>;

START TRANSACTION;

DELETE FROM <назва_таблиці>;

SELECT * FROM <назва_таблиці>;

ROLLBACK;

SELECT * FROM <назва_таблиці>;

Розглянемо детальніше даний фрагмент. Спочатку виконується вибірка всіх рядків з таблиці студентів, щоб продемонструвати, що таблиця не порожня. Далі розпочинається транзакція, знищуються всі рядки в таблиці, далі виконується вибірка, яка демонструє, що таблиця дійсно пуста. Тоді виконується інструкція ROLLBACK, щоб відмінити всі команди, що були виконані після початку транзакції. Остання команда виконується, щоб показати, що таблиця знову не порожня, а саме така ж як була до початку транзакції.

Очевидно, що ROLLBACK може бути використаний лише в транзакції, тобто після того як була виконана команда START TRANSACTION.

Не всі інструкції MySQL можуть бути відкатані назад. Транзакції використовуються для управління інструкціями INSERT, UPDATE та DELETE. Ви не можете відмінити SELECT, тому що ця команда не робить ніяких змін. Також ви не можете відкатити операції CREATE чи DROP. Дані інструкції можуть бути присутні в транзакції, але коли виконаєте ROLLBACK, то вони не будуть відмінені.

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

START TRANSACTION;

DELETE FROM goods WHERE FirmID = 1200155;

DELETE FROM firms WHERE FirmID = 1200155;

COMMIT;

Даний запит розпочинає транзакцію, знищує всі товари, що продає фірма з номером 1200155 з таблиці товарів, а потім знищує і саму фірму з таблиці firms, якщо дві функції DELETE виконались без помилок виконається команда COMMIT і зміни запишуться в обидві таблиці, якщо перший DELETE виконується успішно, а другий викликає помилку, тоді вся транзакція може буде відмінена (виконанням ROLLBACK) і ми будемо впевнені, що видалення фірми не виконалося тільки частково (товари знищились, а фірма залишилася).

При виконанні команд ROLLBACK або COMMIT транзакція вважається завершеною і наступні виклики цих команд не будуть мати ніякого ефекту, поки не буде розпочата інша транзакцію.

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