Какие мнения?
VIEWS — это виртуальные таблицы, которые не хранят никаких собственных данных, но отображают данные, хранящиеся в других таблицах. Другими словами, VIEWS — это не что иное, как SQL-запросы. Представление может содержать все или несколько строк таблицы. Представление MySQL может отображать данные из одной или нескольких таблиц.
Синтаксис просмотров
Давайте теперь посмотрим на основной синтаксис, используемый для создания представления в MySQL.
CREATE VIEW `view_name` AS SELECT statement;
ГДЕ
- «CREATE VIEW` view_name` » говорит серверу MySQL создать объект представления в базе данных с именем` view_name`
- «Оператор AS SELECT» — это операторы SQL, которые должны быть упакованы в представления. Это может быть оператор SELECT, который может содержать данные из одной или нескольких таблиц.
Давайте теперь создадим наше первое представление, используя «myflixdb», мы создадим простое представление, которое ограничивает столбцы, видимые в таблице members.
Предположим, что в требованиях авторизации указано, что бухгалтерия может видеть только номер участника, его имя и пол из таблицы участника. Для этого вы можете создать ВИД —
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Выполнение вышеупомянутого сценария в MySQL Workbench для myflixdb и расширение узла представлений в проводнике баз данных дает нам следующие результаты.
Обратите внимание, что объект account_v_members теперь виден в объектах представлений базы данных. Давайте теперь выполним инструкцию SELECT, которая выбирает все поля из представления.
SELECT * FROM `accounts_v_members`;
Выполнение вышеуказанного скрипта в 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, используемые для создания представления.
Соединения и просмотры
Давайте теперь рассмотрим довольно сложный пример, который включает несколько таблиц и использует соединения.
Мы упакуем созданное 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 Workbench против 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.
Отбрасывание просмотров
Команда DROP может использоваться для удаления представления из базы данных, которое больше не требуется. Основной синтаксис для отбрасывания представления заключается в следующем.
DROP VIEW ` general_v_movie_rentals `;
Зачем использовать представления?
Вы можете хотеть использовать представления прежде всего по следующим 3 причинам
- В конечном итоге вы будете использовать свои знания SQL для создания приложений, которые будут использовать базу данных для требований к данным. Рекомендуется использовать в своем приложении VIEWS исходной структуры таблиц вместо использования самих таблиц. Это гарантирует, что при рефакторинге вашей БД ваш унаследованный код увидит оригинальную схему через представление, не нарушая приложения.
- ВИДЫ увеличивают возможность повторного использования. Вам не нужно будет создавать сложные запросы, включающие соединения повторно. Вся сложность преобразуется в одну строку запроса с использованием VIEWS. Такой сокращенный код будет легче интегрировать в ваше приложение. Это исключит вероятность опечаток, и ваш код станет более читабельным.
- ВИДЫ помогают в защите данных. Вы можете использовать представления, чтобы показывать пользователям только авторизованную информацию и скрывать конфиденциальные данные, такие как номера кредитных карт.
Резюме
- Представления — это виртуальные таблицы; они не содержат данных, которые возвращаются. Данные хранятся в таблицах, на которые ссылается инструкция SELECT.
- Представления улучшают безопасность базы данных, показывая только предполагаемые данные авторизованным пользователям. Они скрывают конфиденциальные данные.
- Представления облегчают жизнь, поскольку вам не приходится писать сложные запросы снова и снова.
- Можно использовать INSERT, UPDATE и DELETE для VIEW. Эти операции изменят базовые таблицы VIEW. Единственное соображение состоит в том, что VIEW должен содержать все столбцы NOT NULL таблиц, на которые он ссылается. В идеале, вы не должны использовать VIEWS для обновления.