Что такое представления в MySQL?
ВИДЫ - это виртуальные таблицы, которые не хранят собственных данных, но отображают данные, хранящиеся в других таблицах. Другими словами, ПРОСМОТРЫ - это не что иное, как SQL-запросы. Представление может содержать все или несколько строк из таблицы. Представление MySQL может отображать данные из одной или нескольких таблиц.
Синтаксис MySQL Views
Давайте теперь посмотрим на основной синтаксис, используемый для создания представления в MySQL.
CREATE VIEW `view_name` AS SELECT statement;
КУДА
- "CREATE VIEW` view_name` " сообщает серверу MySQL создать объект представления в базе данных с именем` view_name`
- «Оператор AS SELECT» - это операторы 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 create view.
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, составляющие определенное представление, мы можем использовать для этого сценарий, показанный ниже.
ПОКАЗАТЬ СОЗДАТЬ ВИД `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.
Удаление представлений в MySQL
Команду DROP можно использовать для удаления представления из базы данных, которое больше не требуется. Базовый синтаксис для удаления представления следующий.
DROP VIEW ` general_v_movie_rentals `;
Зачем нужны просмотры?
Вы можете использовать представления в основном по следующим трем причинам.
- В конечном итоге вы будете использовать свои знания SQL для создания приложений, которые будут использовать базу данных для требований к данным. Рекомендуется использовать ВИДЫ исходной структуры таблицы в вашем приложении вместо использования самих таблиц. Это гарантирует, что при рефакторинге своей БД ваш устаревший код будет видеть исходную схему через представление, не нарушая работу приложения.
- ПРОСМОТРЫ увеличивают удобство повторного использования. Вам не придется многократно создавать сложные запросы, включающие соединения. Вся сложность превращается в одну строку запроса с использованием ВИДОВ. Такой сжатый код будет проще интегрировать в ваше приложение. Это исключит вероятность опечаток, и ваш код будет более читабельным.
- ПРОСМОТРЫ помогают в защите данных. Вы можете использовать представления, чтобы показывать пользователям только авторизованную информацию и скрывать конфиденциальные данные, такие как номера кредитных карт.
Резюме
- Представления - это виртуальные таблицы; они не содержат возвращаемых данных. Данные хранятся в таблицах, указанных в операторе SELECT.
- Представления повышают безопасность базы данных, показывая авторизованным пользователям только предполагаемые данные. Они скрывают конфиденциальные данные.
- Представления облегчают жизнь, поскольку вам не нужно снова и снова писать сложные запросы.
- Можно использовать INSERT, UPDATE и DELETE в VIEW. Эти операции изменят базовые таблицы ВИДА. Единственное соображение - VIEW должен содержать все столбцы NOT NULL в таблицах, на которые он ссылается. В идеале не следует использовать ВИДЫ для обновления.