MySQL Visningar: Hur man skapar en vy från tabeller med exempel
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.
Hur man skapar vyer i MySQL
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.
Anta att behörighetskrav anger att ekonomiavdelningen endast kan se medlemsnummer, namn och kön från medlemmens tabell. För att uppnå detta kan du skapa en VY –
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 |
Endast de auktoriserade kolumnerna för kontoavdelningen har returnerats. Övriga detaljer som finns i medlemstabellen har gömts.
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
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.
Släpp in visningar 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 `;
Varför använda vyer?
Du kanske vill använda vyer främst av följande tre anledningar
- I slutändan kommer du att använda din SQL kunskap , för att skapa applikationer som kommer att använda en databas för datakrav. Det rekommenderas att du använder VIEWS av den ursprungliga tabellstrukturen i din applikation istället för att använda själva tabellerna. Detta säkerställer att när du refaktorerar din DB kommer din äldre kod att se det ursprungliga schemat via vyn utan att bryta applikationen.
- 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.
Sammanfattning
- Vyer är virtuella tabeller; de innehåller inte de uppgifter som returneras. Data lagras i tabellerna som refereras till i SELECT-satsen.
- Vyer förbättrar säkerheten för databasen genom att endast visa avsedd data för behöriga användare. De döljer känsliga uppgifter.
- Åsikter gör livet enkelt eftersom du inte behöver skriva komplexa frågor gång på gång.
- Det är möjligt att använda INSERT, UPPDATERA och DELETE på en vy. Dessa operationer kommer att ändra de underliggande tabellerna i VIEW. Den enda hänsynen är att VIEW bör innehålla alla NOT NULL-kolumner i tabellerna den refererar till. Helst ska du inte använda VIEWS för uppdatering.