Wat zijn weergaven in MySQL?
VIEWS zijn virtuele tabellen die geen eigen gegevens opslaan, maar gegevens weergeven die in andere tabellen zijn opgeslagen. Met andere woorden, VIEWS zijn niets anders dan SQL-query's. Een weergave kan alle of enkele rijen uit een tabel bevatten. Een MySQL-weergave kan gegevens uit één tabel of uit meerdere tabellen weergeven.
MySQL Views-syntaxis
Laten we nu eens kijken naar de basissyntaxis die wordt gebruikt om een weergave in MySQL te maken.
CREATE VIEW `view_name` AS SELECT statement;
WAAR
- "CREATE VIEW" view_name "" vertelt de MySQL-server om een view-object te maken in de database met de naam `view_name`
- "AS SELECT-instructie" zijn de SQL-instructies die in de MySQL-weergaven moeten worden verpakt. Het kan een SELECT-instructie zijn die gegevens uit één tabel of uit meerdere tabellen kan bevatten.
Weergaven maken in MySQL
Hieronder volgt een stapsgewijs proces om een weergave in MySQL te creëren:
Laten we nu onze eerste weergave maken met behulp van de "myflixdb". We zullen een eenvoudige weergave maken die de kolommen beperkt die in de ledentabel te zien zijn.
Stel dat de autorisatievereisten aangeven dat de boekhouding alleen het nummer, de naam en het geslacht van het lid kan zien uit de tabel van het lid. Om dit te bereiken kunt u een VIEW maken -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Het uitvoeren van het bovenstaande script in MySQL workbench tegen de myflixdb en het uitbreiden van de views node in de database explorer geeft ons de volgende resultaten.
Merk op dat het accounts_v_members-object nu zichtbaar is in de databaseweergavenobjecten. Laten we nu een SELECT-instructie uitvoeren die alle velden uit de view selecteert, zoals weergegeven in het onderstaande MySQL create view-voorbeeld.
SELECT * FROM `accounts_v_members`;
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen myflixdb geeft ons de volgende resultaten die hieronder worden weergegeven.
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 |
Alleen de geautoriseerde kolommen voor de boekhoudafdeling zijn geretourneerd. Andere details in de ledentabel zijn verborgen.
Als we de SQL-instructies willen zien waaruit een bepaalde weergave bestaat, kunnen we het onderstaande script gebruiken om dat te doen.
TOON MAKEN BEKIJK `accounts_v_members`;
Als u het bovenstaande script uitvoert, krijgt u de viewnaam en de SQL SELECT-instructies die zijn gebruikt om de view te maken.
Joins en weergaven in MySQL
Laten we nu eens kijken naar een vrij complex voorbeeld dat meerdere tabellen omvat en joins gebruikt.
We zullen de gemaakte JOIN verpakken die informatie uit drie (3) tabellen haalt, namelijk leden, films en huurfilms. Hieronder staat het script dat ons helpt om dat te bereiken.
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`;
Door de bovenstaande scripts uit te voeren, wordt de weergave met de naam general_v_movie_rentals gemaakt in onze myflixdb
Laten we nu alle velden selecteren uit een tabel met de naam general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons de volgende resultaten die hieronder worden weergegeven.
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 |
Merk op dat we de complexe JOIN-zoekopdracht niet hoefden te schrijven om informatie te krijgen over leden, films en huurfilms. We gebruikten de weergave gewoon in een gewone SELECT-instructie als elke andere gewone tabel. De weergave kan worden opgeroepen vanaf elke plek in het applicatiesysteem dat bovenop de myflixdb draait.
Weergaven laten vallen in MySQL
De DROP-opdracht kan worden gebruikt om een weergave uit de database te verwijderen die niet langer nodig is. De basissyntaxis om een weergave te verwijderen is als volgt.
DROP VIEW ` general_v_movie_rentals `;
Waarom views gebruiken?
Misschien wilt u weergaven voornamelijk gebruiken om de volgende drie redenen
- Uiteindelijk ga je je SQL-kennis gebruiken om applicaties te maken die een database gebruiken voor gegevensvereisten. Het wordt aanbevolen dat u VIEWS van de originele tabelstructuur in uw toepassing gebruikt in plaats van de tabellen zelf. Dit zorgt ervoor dat wanneer u uw database refactoreert, uw oude code het originele schema via de weergave ziet zonder de toepassing te onderbreken.
- VIEWS verhogen de herbruikbaarheid. U hoeft geen complexe query's te maken met herhaaldelijk joins. Alle complexiteit wordt omgezet in een enkele regel met het gebruik van VIEWS. Dergelijke verkorte code is gemakkelijker te integreren in uw applicatie. Dit elimineert de kans op typefouten en uw code wordt beter leesbaar.
- VIEWS helpt bij gegevensbeveiliging. U kunt weergaven gebruiken om alleen geautoriseerde informatie aan gebruikers te tonen en gevoelige gegevens zoals creditcardnummers te verbergen.
Overzicht
- Weergaven zijn virtuele tabellen; ze bevatten niet de gegevens die worden geretourneerd. De gegevens worden opgeslagen in de tabellen waarnaar wordt verwezen in de SELECT-instructie.
- Weergaven verbeteren de beveiliging van de database door alleen de bedoelde gegevens aan geautoriseerde gebruikers te tonen. Ze verbergen gevoelige gegevens.
- Weergaven maken het leven gemakkelijk omdat u niet keer op keer complexe vragen hoeft te schrijven.
- Het is mogelijk om INSERT, UPDATE en DELETE te gebruiken op een VIEW. Deze bewerkingen zullen de onderliggende tabellen van de VIEW wijzigen. De enige overweging is dat VIEW alle NOT NULL-kolommen moet bevatten van de tabellen waarnaar het verwijst. Idealiter zou u VIEWS niet moeten gebruiken om bij te werken.