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

⚡ Умное резюме

MySQL Представления — это виртуальные таблицы, которые не хранят собственных данных, а вместо этого отображают результат сохраненного запроса SELECT. В этом ресурсе объясняется, как создавать, запрашивать, объединять и удалять представления, с примерами, работающими на базе данных myflixdb.

  • 🧱 Основное определение: Представление — это именованный оператор SELECT, который ведёт себя как таблица, но не содержит данных.
  • 🔐 Преимущество безопасности: Представления отображают только разрешенные столбцы и скрывают от пользователей конфиденциальные поля.
  • ♻️ Преимущество многоразового использования: Сложный оператор JOIN для нескольких таблиц пишется один раз и повторно используется в виде однострочного оператора SELECT.
  • 🇧🇷 Синтаксис создания: Оператор CREATE VIEW `view_name` AS SELECT определяет представление внутри базы данных.
  • 🇧🇷 Команды жизненного цикла: Команда SHOW CREATE VIEW отображает сохраненный запрос, а команда DROP VIEW удаляет его, не затрагивая базовые таблицы.

MySQL Виды

Что такое просмотры MySQL?

ПРОСМОТРЫ — это виртуальные таблицы, которые не хранят никаких собственных данных, а отображают данные, хранящиеся в других таблицах. Другими словами, ПРЕДСТАВЛЕНИЯ — это не что иное, как SQL-запросы. Представление может содержать все или несколько строк таблицы. А MySQL Представление может отображать данные из одной таблицы или нескольких таблиц.

MySQL Синтаксис представлений

Давайте теперь посмотрим на основной синтаксис, используемый для создания представления в MySQL.

CREATE VIEW `view_name` AS SELECT statement;

ГДЕ

  • «СОЗДАТЬ ПРЕДСТАВЛЕНИЕ `view_name`» говорит MySQL сервер для создания объекта представления в базе данных с именем `view_name`
  • «Оператор AS SELECT» это операторы SQL, которые должны быть упакованы в MySQL Взгляды. Это может быть оператор SELECT, который может содержать данные из одной таблицы или нескольких таблиц.

Зачем использовать представления?

Прежде чем строить, полезно понимать, что именно дает вам вид из окна.

Возможно, вы захотите использовать представления в первую очередь по следующим трем причинам.

  • В конечном итоге, вы воспользуетесь своим SQL Для создания приложений, использующих базу данных для обработки необходимых данных, рекомендуется использовать представления (VIEW) исходной структуры таблиц в приложении вместо самих таблиц. Это гарантирует, что при рефакторинге базы данных ваш устаревший код будет видеть исходную схему через представление без нарушения работы приложения.
  • ВИДЫ повышают возможность повторного использования. Вам не придется неоднократно создавать сложные запросы, включающие соединения. Вся сложность преобразуется в одну строку запроса с использованием VIEWS. Такой сжатый код будет легче интегрировать в ваше приложение. Это устранит вероятность опечаток и ваш код станет более читабельным.
  • VIEWS помогают обеспечить безопасность данных. Вы можете использовать представления, чтобы показывать пользователям только разрешенную информацию и скрывать конфиденциальные данные, такие как номера кредитных карт.

Как создавать представления в MySQL

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

Ниже приведен пошаговый процесс создания представления. MySQL:

Шаг 1) Создайте наше первое представление, используя «myflixdb».

Давайте теперь создадим наше первое представление, используя «myflixdb». Мы создадим простое представление, которое ограничивает столбцы, видимые в таблице участников.

Предположим, что требования к авторизации гласят, что бухгалтерия может видеть только номер, имя и пол участника из таблицы участников. Для этого можно создать представление (VIEW) –

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

Шаг 2) Расширение узла представлений

Выполнение приведенного выше сценария в MySQL Workbench с myflixdb и расширение узла представлений в обозревателе баз данных дает нам следующие результаты.

Создание представлений в MySQL

Обратите внимание, что объект account_v_members теперь виден в объектах представлений базы данных.

Шаг 3) Выполнить оператор SELECT

Давайте теперь выполним Оператор SELECT который выбирает все поля из представления, как показано ниже. MySQL создать пример просмотра.

SELECT * FROM `accounts_v_members`;

Шаг 4) Выполнить скрипт

Выполнение приведенного выше сценария в MySQL Workbench против 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, составляющие определенное представление, мы можем использовать для этого сценарий, показанный ниже.

SHOW CREATE VIEW `accounts_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.

Падениеping Просмотры в MySQL

Команда DROP может использоваться для удаления представления из база данных это больше не требуется. Основной синтаксис удаления представления следующий.

DROP VIEW `general_v_movie_rentals`;

Падениеping При использовании представления удаляется только сохраненный запрос; базовые таблицы и их данные остаются нетронутыми.

Часто задаваемые вопросы (FAQ)

Иногда. Функции INSERT, UPDATE и DELETE работают только с простыми представлениями, содержащими все столбцы базовой таблицы, не содержащие NULL. Представления, построенные на основе объединений или агрегатных функций, не подлежат обновлению.

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

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

Да. Искусственный интеллект в таких инструментах, как... MySQL Верстак Можно составить оператор CREATE VIEW на основе описания. Перед его выполнением проверьте список столбцов и ключи соединения.

Частично. Искусственный интеллект может помечать конфиденциальные столбцы, такие как номера карт, и предлагать более безопасный список столбцов. Окончательное решение все равно должно соответствовать политике доступа к данным вашей организации.

Подведем итог этой публикации следующим образом: