MySQL Views: How to Create View from Tables
โก Smart sammanfattning
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.

Vad รคr vyer i MySQL?
VIEWS รคr virtuella tabeller som inte lagrar nรฅgra egna data utan visar data lagrade i andra tabeller. Med andra ord, VIEWS รคr inget annat รคn SQL Queries. En vy kan innehรฅlla alla eller nรฅgra rader frรฅn en tabell. A MySQL vyn kan visa data frรฅn en tabell eller mรฅnga tabeller.
MySQL Syntax fรถr visningar
Lรฅt oss nu titta pรฅ den grundlรคggande syntaxen som anvรคnds fรถr att skapa en vy i MySQL.
CREATE VIEW `view_name` AS SELECT statement;
VAR
- "SKAPA VY `view_name`" berรคttar MySQL server fรถr att skapa ett vyobjekt i databasen med namnet `view_name`
- "AS SELECT-sats" รคr SQL-satserna som ska packas i MySQL Visningar. Det kan vara en SELECT-sats som kan innehรฅlla data frรฅn en tabell eller flera tabeller.
Varfรถr anvรคnda vyer?
Before building one, it helps to know what a view actually buys you.
Du kanske vill anvรคnda vyer frรคmst av fรถljande tre anledningar
- 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 รถkar รฅteranvรคndbarheten. Du behรถver inte skapa komplexa frรฅgor som involverar kopplingar upprepade gรฅnger. All komplexitet omvandlas till en enda rad med frรฅgeanvรคndning VIEWS. Sรฅdan komprimerad kod blir lรคttare att integrera i din applikation. Detta eliminerar risken fรถr stavfel och din kod blir mer lรคsbar.
- VIEWS hjรคlper till med datasรคkerhet. Du kan anvรคnda vyer fรถr att endast visa behรถrig information fรถr anvรคndare och dรถlja kรคnslig information som kreditkortsnummer.
Hur man skapar vyer i MySQL
With the syntax and the benefits established, the steps below build a working view end to end.
Fรถljande รคr en steg-fรถr-steg-process fรถr att skapa vy i MySQL:
Steg 1) Skapa vรฅr fรถrsta vy med "myflixdb"
Lรฅt oss nu skapa vรฅr fรถrsta vy med hjรคlp av "myflixdb", vi kommer att skapa en enkel vy som begrรคnsar kolumnerna som ses i medlemstabellen.
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`;
Steg 2) Expandera vynoden
Exekvera skriptet ovan i MySQL arbetsbรคnk mot myflixdb och utรถka visningsnoden i databasutforskaren ger oss fรถljande resultat.
Observera att objektet accounts_v_members nu รคr synligt i databasvyobjekten.
Steg 3) Kรถr en SELECT-sats
Lรฅt oss nu kรถra en SELECT-sats som vรคljer alla fรคlt frรฅn vyn som visas i nedan MySQL skapa vyexempel.
SELECT * FROM `accounts_v_members`;
Steg 4) Kรถr ett skript
Exekvera skriptet ovan i MySQL workbench mot myflixdb ger oss fรถljande resultat som visas nedan.
| 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.
Om vi โโvill se SQL-satserna som utgรถr en viss vy kan vi anvรคnda skriptet som visas nedan fรถr att gรถra det.
SHOW CREATE VIEW `accounts_v_members`;
Genom att kรถra skriptet ovan fรฅr du vynnamnet och SQL SELECT-satserna som anvรคnds fรถr att skapa vyn.
Gรฅr med och tittar in MySQL
A single-table view is the simplest case. Views become far more valuable when they wrap a multi-table query.
Lรฅt oss nu titta pรฅ ett ganska komplext exempel som involverar flera tabeller och anvรคndningsomrรฅden fรถrenar.
Vi kommer att paketera den skapade JOIN som fรฅr information frรฅn tre (3) tabeller nรคmligen medlemmar, filmer och filmuthyrning. Nedan รคr manuset som hjรคlper oss att uppnรฅ det.
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`;
Genom att kรถra ovanstรฅende skript skapas vyn med namnet general_v_movie_rentals i vรฅr myflixdb
Lรฅt oss nu vรคlja alla fรคlt frรฅn en tabell som heter general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Exekvera skriptet ovan i MySQL arbetsbรคnk mot myflixdb ger oss fรถljande resultat som visas nedan.
| 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 |
Observera att vi inte behรถvde skriva den komplexa JOIN-frรฅgan fรถr att fรฅ information om medlemmar, filmer och information om hyrfilmer. Vi anvรคnde helt enkelt vyn i en vanlig SELECT-sats som vilken annan vanlig tabell som helst. Vyn kan anropas frรฅn var som helst i applikationssystemet som kรถrs ovanpรฅ myflixdb.
Dropping Visningar i MySQL
Kommandot DROP kan anvรคndas fรถr att ta bort en vy frรฅn databas som inte lรคngre behรถvs. Den grundlรคggande syntaxen fรถr att slรคppa en vy รคr som fรถljer.
DROP VIEW `general_v_movie_rentals`;
Dropping a view removes only the stored query; the underlying tables and their data are untouched.

