MySQL Изгледи: Как да създадете изглед от таблици

⚡ Умно обобщение

MySQL Изгледите са виртуални таблици, които не съхраняват собствени данни, а вместо това представят резултата от съхранена SELECT заявка. Този ресурс обяснява как да създавате, заявявате, присъединявате и премахвате изгледи, с примери за изпълнение от базата данни myflixdb.

  • 🧱 Основна дефиниция: Изгледът е именуван SELECT оператор, който се държи като таблица, но не съдържа данни.
  • 🔐 Предимство за сигурността: Изгледите показват само оторизираните колони и скриват чувствителните полета от потребителите.
  • Предимство за многократна употреба: Сложният JOIN за множество таблици се записва веднъж и се използва повторно като едноредов SELECT.
  • 🛠️ Синтаксис на създаване: CREATE VIEW `view_name` AS SELECT командата дефинира изгледа в базата данни.
  • 🗑️ Команди за жизнения цикъл: SHOW CREATE VIEW показва съхранената заявка, а DROP VIEW я изтрива, без да докосва базовите таблици.

MySQL Прегледи

Какво представляват Views in MySQL?

ИЗГЛЕДИ са виртуални таблици, които не съхраняват никакви собствени данни, но показват данни, съхранени в други таблици. С други думи, VIEWS не са нищо друго освен SQL заявки. Един изглед може да съдържа всички или няколко реда от таблица. А MySQL изгледът може да показва данни от една или много таблици.

MySQL Изгледи синтаксис

Нека сега да разгледаме основния синтаксис, използван за създаване на изглед в MySQL.

CREATE VIEW `view_name` AS SELECT statement;

КЪДЕ

  • „СЪЗДАВАНЕ НА ИЗГЛЕД `view_name`“ разказва MySQL сървър за създаване на изглед обект в базата данни с име `view_name`
  • „Изявление AS SELECT“ е SQL изразите, които трябва да бъдат пакетирани в MySQL Изгледи. Това може да бъде оператор SELECT, който може да съдържа данни от една или няколко таблици.

Защо да използвате изгледи?

Преди да построите такава, е полезно да знаете какво всъщност ви носи една гледка.

Може да искате да използвате изгледи основно поради следните 3 причини

  • В крайна сметка ще използвате вашето SQL знания, за да създавате приложения, които ще използват база данни за изисквания към данните. Препоръчително е да използвате VIEWS на оригиналната структура на таблиците във вашето приложение, вместо да използвате самите таблици. Това гарантира, че когато рефакторирате вашата база данни, вашият стар код ще вижда оригиналната схема чрез изгледа, без да нарушава приложението.
  • VIEWS увеличава възможността за повторна употреба. Няма да се налага да създавате сложни заявки, включващи многократно обединяване. Цялата сложност се преобразува в един ред на заявка, използвайки 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

Обърнете внимание, че обектът accounts_v_members вече е видим в обектите на изгледите на базата данни.

Стъпка 3) Изпълнете оператор SELECT

Нека сега изпълним a 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 Изгледът премахва само съхранената заявка; основните таблици и техните данни остават недокоснати.

Въпроси и Отговори

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

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

Не. Изгледът изпълнява основния си SELECT при всяко извикване, така че производителността съответства на оригиналната заявка. MySQL няма материализирани изгледи и скоростта все още зависи от индексите на базовата таблица.

Да. Асистенти с изкуствен интелект в инструменти като MySQL Workbench може да създаде CREATE VIEW оператор от описание. Проверете списъка с колони и ключовете за свързване, преди да го изпълните.

Частично. Изкуственият интелект може да маркира чувствителни колони, като например номера на карти, и да предложи по-безопасен списък с колони. Окончателното решение все пак трябва да е в съответствие с политиката за достъп до данни на вашата организация.

Обобщете тази публикация с: