MySQL Views: How to Create View from Tables
โก Inteligentne podsumowanie
MySQL Views are virtual tables that store no data of their own and instead present the result of a stored SELECT query. This resource explains how to create, query, join, and drop views, with runnable examples from the myflixdb database.

W czym sฤ widoki MySQL?
POGLฤDY to wirtualne tabele, ktรณre nie przechowujฤ ลผadnych wลasnych danych, ale wyลwietlajฤ dane przechowywane w innych tabelach. Innymi sลowy, WIDOKI to nic innego jak zapytania SQL. Widok moลผe zawieraฤ wszystkie lub kilka wierszy tabeli. A MySQL widok moลผe pokazywaฤ dane z jednej tabeli lub wielu tabel.
MySQL Skลadnia widokรณw
Przyjrzyjmy siฤ teraz podstawowej skลadni uลผywanej do tworzenia widoku w MySQL.
CREATE VIEW `view_name` AS SELECT statement;
WHERE
- โUTWรRZ WIDOK โnazwa_widokuโโ mรณwi MySQL serwer, aby utworzyฤ obiekt widoku w bazie danych o nazwie `nazwa_widoku`
- โOลwiadczenie AS SELECTโ to instrukcje SQL, ktรณre majฤ byฤ spakowane w pliku MySQL Wyลwietlenia. Moลผe to byฤ instrukcja SELECT, ktรณra moลผe zawieraฤ dane z jednej tabeli lub wielu tabel.
Dlaczego warto korzystaฤ z widokรณw?
Before building one, it helps to know what a view actually buys you.
Widoki moลผesz chcieฤ uลผywaฤ gลรณwnie z nastฤpujฤ cych 3 powodรณw
- Ultimately, you will use your SQL knowledge, to create applications, which will use a database for data requirements. Itโs recommended that you use VIEWS of the original table structure in your application instead of using the tables themselves. This ensures that when you refactor your DB, your legacy code will see the original schema via the view without breaking the application.
- VIEWS zwiฤkszajฤ moลผliwoลฤ ponownego uลผycia. Nie bฤdziesz musiaล tworzyฤ zลoลผonych zapytaล obejmujฤ cych ลฤ czenia wielokrotnie. Caลa zลoลผonoลฤ jest konwertowana do pojedynczego wiersza zapytania za pomocฤ VIEWS. Taki skondensowany kod bฤdzie ลatwiejszy do zintegrowania w Twojej aplikacji. Wyeliminuje to ryzyko literรณwek, a Twรณj kod bฤdzie bardziej czytelny.
- VIEWS pomagajฤ w zabezpieczaniu danych. Moลผesz uลผywaฤ widokรณw, aby pokazywaฤ uลผytkownikom tylko autoryzowane informacje i ukrywaฤ poufne dane, takie jak numery kart kredytowych.
Jak tworzyฤ widoki w MySQL
With the syntax and the benefits established, the steps below build a working view end to end.
Poniลผej przedstawiono krok po kroku proces tworzenia widoku w MySQL:
Krok 1) Utwรณrz nasz pierwszy widok za pomocฤ โmyflixdbโ
Stwรณrzmy teraz nasz pierwszy widok za pomocฤ โmyflixdbโ. Stworzymy prosty widok, ktรณry ogranicza kolumny widoczne w tabeli czลonkรณw.
Suppose authorization requirements state that the accounts department can only see memberโs number, name and gender from the memberโs table. To achieve this you can create a VIEW โ
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Krok 2) Rozwijanie wฤzลa widokรณw
Wykonanie powyลผszego skryptu w MySQL workbench z myflixdb i rozwiniฤcie wฤzลa views w eksploratorze bazy danych daje nam nastฤpujฤ ce wyniki.
Uwaga: obiekt account_v_members jest teraz widoczny w obiektach widokรณw bazy danych.
Krok 3) Wykonaj instrukcjฤ SELECT
Wykonajmy teraz a SELECT oลwiadczenie ktรณry wybiera wszystkie pola z widoku, jak pokazano poniลผej MySQL utwรณrz przykลad widoku.
SELECT * FROM `accounts_v_members`;
Krok 4) Wykonaj skrypt
Wykonanie powyลผszego skryptu w MySQL workbench i myflixdb dajฤ nam nastฤpujฤ ce wyniki, pokazane poniลผej.
| 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 |
Only the authorized columns for accounts department have been returned. Other details found in the members table have been hidden.
Jeลli chcemy zobaczyฤ instrukcje SQL tworzฤ ce konkretny widok, moลผemy w tym celu skorzystaฤ ze skryptu pokazanego poniลผej.
SHOW CREATE VIEW `accounts_v_members`;
Wykonanie powyลผszego skryptu daje nazwฤ widoku i instrukcje SQL SELECT uลผyte do utworzenia widoku.
Doลฤ cza i oglฤ da w MySQL
A single-table view is the simplest case. Views become far more valuable when they wrap a multi-table query.
Przyjrzyjmy siฤ teraz doลฤ zลoลผonemu przykลadowi, ktรณry obejmuje wiele tabel i zastosowaล ลฤ czy.
Spakujemy utworzony JOIN, ktรณry pobiera informacje z trzech (3) tabel, a mianowicie czลonkรณw, filmรณw i wypoลผyczeล filmรณw. Poniลผej znajduje siฤ skrypt, ktรณry pomaga nam to osiฤ gnฤ ฤ.
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`;
Wykonanie powyลผszych skryptรณw tworzy widok o nazwie general_v_movie_rentals w naszym myflixdb
Wybierzmy teraz wszystkie pola z tabeli o nazwie general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Wykonanie powyลผszego skryptu w MySQL Workbench w stosunku do myflixdb daje nam nastฤpujฤ ce wyniki pokazane poniลผej.
| 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 |
Zauwaลผ, ลผe nie musieliลmy pisaฤ zลoลผonego zapytania JOIN, aby uzyskaฤ informacje o czลonkach, filmach i szczegรณลach wypoลผyczania filmรณw. Po prostu uลผyliลmy widoku w zwykลym poleceniu SELECT, jak kaลผdej innej zwykลej tabeli. Widok moลผna wywoลaฤ z dowolnego miejsca w systemie aplikacji dziaลajฤ cym na myflixdb.
Spadekping Widoki w MySQL
Polecenie DROP moลผe zostaฤ uลผyte do usuniฤcia widoku z pliku baza danych to nie jest juลผ wymagane. Podstawowa skลadnia upuszczania widoku jest nastฤpujฤ ca.
DROP VIEW `general_v_movie_rentals`;
Spadekping a view removes only the stored query; the underlying tables and their data are untouched.

