Какво представляват изгледите в MySQL?
VIEWS са виртуални таблици, които не съхраняват никакви собствени данни, но показват данни, съхранени в други таблици. С други думи, VIEWS не са нищо друго освен SQL заявки. Изгледът може да съдържа всички или няколко реда от таблица. Изгледът MySQL може да показва данни от една таблица или много таблици.
Синтаксис на MySQL Views
Нека сега разгледаме основния синтаксис, използван за създаване на изглед в MySQL.
CREATE VIEW `view_name` AS SELECT statement;
КЪДЕТО
- "CREATE VIEW` view_name` " казва на MySQL сървъра да създаде обект на изглед в базата данни с име` view_name`
- „AS SELECT statement“ е SQL изразите, които трябва да бъдат опаковани в MySQL Views. Това може да бъде оператор SELECT, който може да съдържа данни от една таблица или множество таблици.
Как да създадете изгледи в MySQL
Следва стъпка по стъпка процес за създаване на изглед в MySQL:
Нека сега създадем първия си изглед, използвайки "myflixdb", ще създадем прост изглед, който ограничава колоните, виждани в таблицата на членовете.
Да предположим, че изискванията за оторизация заявяват, че счетоводният отдел може да вижда само номера, името и пола на члена от таблицата на члена. За да постигнете това, можете да създадете VIEW -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Изпълнението на горния скрипт в MySQL workbench срещу myflixdb и разширяването на възла на изгледите в изследователя на базата данни ни дава следните резултати.
Обърнете внимание, че обектът account_v_members вече се вижда в обектите на изгледите на базата данни. Нека сега изпълним оператор SELECT, който избира всички полета от изгледа, както е показано в долния пример за създаване на изглед MySQL.
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 изразите, които съставляват определен изглед, можем да използваме скрипта, показан по-долу, за да го направим.
ПОКАЖЕТЕ СЪЗДАВАНЕ НА ПРЕГЛЕД `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 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.
Отпадане на изгледи в MySQL
Командата DROP може да се използва за изтриване на изглед от базата данни, който вече не е необходим. Основният синтаксис за изпускане на изглед е както следва.
DROP VIEW ` general_v_movie_rentals `;
Защо да използвам изгледи?
Може да искате да използвате изгледи предимно по следните 3 причини
- В крайна сметка ще използвате вашите знания за SQL, за да създадете приложения, които ще използват база данни за изисквания за данни. Препоръчително е да използвате VIEWS на оригиналната структура на таблицата във вашето приложение, вместо да използвате самите таблици. Това гарантира, че когато рефакторирате вашата DB, вашият наследствен код ще види схемата orignal чрез изгледа, без да нарушава приложението.
- VIEWS увеличават повторната използваемост. Няма да се налага да създавате многократно сложни заявки, включващи обединения. Цялата сложност се преобразува в един ред на заявка използва VIEWS. Такъв съкратен код ще бъде по-лесен за интегриране във вашето приложение. Това ще премахне шансовете за печатни грешки и вашият код ще бъде по-четлив.
- VIEWS помагат за сигурността на данните. Можете да използвате изгледи, за да показвате на потребителите само оторизирана информация и да скривате поверителни данни като номера на кредитни карти.
Обобщение
- Изгледите са виртуални таблици; те не съдържат данните, които се връщат. Данните се съхраняват в таблиците, посочени в оператора SELECT.
- Изгледите подобряват сигурността на базата данни, като показват само предвидени данни на оторизирани потребители. Те крият чувствителни данни.
- Изгледите улесняват живота, тъй като не е нужно да пишете сложни заявки отново и отново.
- Възможно е да използвате INSERT, UPDATE и DELETE на VIEW. Тези операции ще променят основните таблици на VIEW. Единственото съображение е, че VIEW трябва да съдържа всички колони NOT NULL на таблиците, към които се позовава. В идеалния случай не трябва да използвате VIEWS за актуализиране.