Що таке подання в MySQL?
ВИДИ - це віртуальні таблиці, які не зберігають власних даних, а відображають дані, що зберігаються в інших таблицях. Іншими словами, ПЕРЕГЛЯДИ - це не що інше, як запити SQL. Представлення може містити всі або кілька рядків з таблиці. У поданні MySQL можуть відображатися дані з однієї таблиці або з багатьох таблиць.
Синтаксис MySQL Views
Давайте тепер розглянемо основний синтаксис, який використовується для створення подання в MySQL.
CREATE VIEW `view_name` AS SELECT statement;
ДЕ
- "CREATE VIEW` view_name` " говорить серверу MySQL створити об'єкт подання в базі даних з ім'ям` view_name`
- "AS SELECT statement" - це оператори SQL, які мають бути упаковані в подання MySQL. Це може бути оператор SELECT, який може містити дані з однієї таблиці або декількох таблиць.
Як створити представлення в MySQL
Далі йде покроковий процес створення подання в MySQL:
Давайте тепер створимо наш перший вигляд за допомогою "myflixdb"; ми створимо простий вигляд, який обмежує стовпці, що відображаються в таблиці членів.
Припустимо, вимоги авторизації стверджують, що бухгалтерія може бачити лише номер, ім’я та стать члена з таблиці учасника. Для цього ви можете створити ПЕРЕГЛЯД -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Виконання вищезазначеного сценарію в робочому середовищі MySQL проти myflixdb та розширення вузла подань у провіднику баз даних дає нам такі результати.
Зверніть увагу, що об’єкт accounts_v_members тепер видно в об’єктах подання бази даних. Давайте зараз виконаємо оператор SELECT, який вибирає всі поля з подання, як показано в наведеному нижче прикладі створення подання MySQL.
SELECT * FROM `accounts_v_members`;
Виконання вищезазначеного сценарію в робочому середовищі MySQL проти myflixdb дає нам такі результати, показані нижче.
membership_number | full_names | gender |
---|---|---|
1 | Janet Jones | Female |
2 | Janet Smith Jones | Female |
3 | Robert Phil | Male |
4 | Gloria Williams | Female |
5 | Leonard Hofstadter | Male |
6 | Sheldon Cooper | Male |
7 | Rajesh Koothrappali | Male |
8 | Leslie Winkle | Male |
9 | Howard Wolowitz | Male |
Повернуто лише авторизовані стовпці для бухгалтерії. Інші деталі, знайдені в таблиці учасників, були приховані.
Якщо ми хочемо побачити оператори SQL, які складають певний вигляд, ми можемо використовувати для цього скрипт, показаний нижче.
ПОКАЗАТИ СТВОРИТИ ПЕРЕГЛЯД `account_v_members`;
Виконання вищезазначеного сценарію дає вам ім'я подання та оператори SQL SELECT, використані для створення подання.
Об'єднання та подання в MySQL
Давайте тепер розглянемо досить складний приклад, який включає кілька таблиць і використовує об'єднання.
Ми упакуємо створений JOIN, який отримує інформацію з трьох (3) таблиць, а саме членів, фільмів та прокату фільмів. Нижче наведено сценарій, який допомагає нам цього досягти.
CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;
Виконання вищезазначених сценаріїв створює подання з назвою general_v_movie_rentals у нашому myflixdb
Давайте тепер виберемо всі поля з таблиці з іменем general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Виконання вищезазначеного сценарію в робочому середовищі MySQL проти myflixdb дає нам такі результати, показані нижче.
membership_number | full_names | title | transaction_date | return_date |
---|---|---|---|---|
1 | Janet Jones | Pirates of the Caribean 4 | 20-06-2012 | 28-06-2012 |
1 | Janet Jones | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
3 | Robert Phil | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
2 | Janet Smith Jones | Forgetting Sarah Marshal | 21-06-2012 | 24-06-2012 |
3 | Robert Phil | X-Men | 23-06-2012 | 28-06-2012 |
Зверніть увагу: нам не потрібно було писати складний запит JOIN, щоб отримати інформацію про учасників, фільми та деталі прокату фільмів. Ми просто використовували подання у звичайному операторі SELECT як будь-яку іншу звичайну таблицю. Вигляд можна викликати з будь-якої точки системи додатків, що працює поверх myflixdb.
Видалення переглядів у MySQL
Команда DROP може використовуватися для видалення подання з бази даних, яке більше не потрібне. Основний синтаксис для видалення подання такий.
DROP VIEW ` general_v_movie_rentals `;
Навіщо використовувати подання?
Можливо, вам захочеться використовувати представлення з перших трьох причин
- Зрештою, ви будете використовувати свої знання SQL для створення додатків, які використовуватимуть базу даних для потреб даних. Рекомендується використовувати ПЕРЕГЛЯДИ оригінальної структури таблиці у своєму додатку, а не використовувати самі таблиці. Це гарантує, що під час рефакторингу вашої БД ваш застарілий код побачить схему orignal у поданні, не порушуючи програму.
- ПЕРЕГЛЯДИ збільшують можливість повторного використання. Вам не доведеться створювати складні запити, що включають об'єднання повторно. Вся складність перетворюється в один рядок запиту за допомогою ВИДІВ. Такий стислий код буде простіше інтегрувати у вашу програму. Це виключає можливість помилок, і ваш код стане більш читабельним.
- ПОГЛЯДИ допомагають у безпеці даних. Ви можете використовувати подання, щоб показувати користувачам лише дозволену інформацію та приховувати конфіденційні дані, такі як номери кредитних карток.
Резюме
- Представлення - це віртуальні таблиці; вони не містять даних, які повертаються. Дані зберігаються в таблицях, на які посилається оператор SELECT.
- Представлення даних покращують безпеку бази даних, показуючи авторизованим користувачам лише призначені дані. Вони приховують конфіденційні дані.
- Перегляди полегшують життя, оскільки вам не потрібно писати складні запити раз за разом.
- Можна використовувати ВСТАВИТИ, ОНОВИТИ та ВИДАЛИТИ в ПЕРЕГЛЯДІ. Ці операції змінять основні таблиці VIEW. Єдиною міркуванням є те, що VIEW повинен містити всі колонки NOT NULL таблиць, на які він посилається. В ідеалі, ви не повинні використовувати ПЕРЕГЛЯДИ для оновлення.