Перегляди MySQL: Як створити подання з таблиць на прикладах

Зміст:

Anonim

Що таке подання в 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 таблиць, на які він посилається. В ідеалі, ви не повинні використовувати ПЕРЕГЛЯДИ для оновлення.