MySQL Weergaven: Hoe maak je een weergave van tabellen?

⚡ Slimme samenvatting

MySQL Views zijn virtuele tabellen die geen eigen gegevens opslaan, maar in plaats daarvan het resultaat van een opgeslagen SELECT-query weergeven. Deze handleiding legt uit hoe u views kunt maken, opvragen, samenvoegen en verwijderen, met werkende voorbeelden uit de myflixdb-database.

  • 🧱 Kerndefinitie: Een view is een benoemde SELECT-instructie die zich gedraagt ​​als een tabel, maar geen gegevens bevat.
  • 🔐 Veiligheidsvoordeel: Weergaven tonen alleen de geautoriseerde kolommen en houden gevoelige velden verborgen voor gebruikers.
  • ♻️ Voordeel van hergebruik: Een complexe JOIN met meerdere tabellen wordt eenmaal geschreven en vervolgens hergebruikt als een SELECT-query op één regel.
  • Aanmaaksyntaxis: De `CREATE VIEW `view_name` AS SELECT` instructie definieert de weergave in de database.
  • 🗑️ Levenscyclusopdrachten: Met SHOW CREATE VIEW wordt de opgeslagen query weergegeven, en met DROP VIEW wordt deze verwijderd zonder de basistabellen aan te raken.

MySQL Weergaves

Wat zijn weergaven in MySQL?

ZICHTEN zijn virtuele tabellen die zelf geen 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. A MySQL weergave kan gegevens uit één tabel of uit meerdere tabellen weergeven.

MySQL Syntaxis van weergaven

Laten we nu kijken naar de basissyntaxis die wordt gebruikt om een ​​weergave te maken MySQL.

CREATE VIEW `view_name` AS SELECT statement;

WAAR

  • “CREËER WEERGAVE `view_name`” vertelt MySQL server om een ​​view-object in de database te maken met de naam `view_name`
  • “AS SELECT-instructie” zijn de SQL-instructies die moeten worden ingepakt in de MySQL Keer bekeken. Het kan een SELECT-instructie zijn die gegevens uit één tabel of meerdere tabellen bevat.

Waarom weergaven gebruiken?

Voordat je gaat bouwen, is het handig om te weten wat een uitzicht je eigenlijk oplevert.

U wilt weergaven mogelijk voornamelijk gebruiken om de volgende 3 redenen

  • Uiteindelijk zul je je SQL Je hebt de kennis nodig om applicaties te ontwikkelen die een database gebruiken voor hun datavereisten. Het is aan te raden om in je applicatie weergaven (VIEWS) van de oorspronkelijke tabelstructuur te gebruiken in plaats van de tabellen zelf. Dit zorgt ervoor dat wanneer je je database herstructureert, je bestaande code het oorspronkelijke schema via de weergave kan zien zonder dat de applicatie niet meer werkt.
  • VIEWS verhogen de herbruikbaarheid. U hoeft geen complexe query's te maken met herhaaldelijke joins. Alle complexiteit wordt omgezet in een enkele regel query met VIEWS. Zulke gecondenseerde code is gemakkelijker te integreren in uw applicatie. Dit elimineert de kans op typefouten en uw code is beter leesbaar.
  • VIEWS helpen bij gegevensbeveiliging. U kunt views gebruiken om alleen geautoriseerde informatie aan gebruikers te tonen en gevoelige gegevens zoals creditcardnummers te verbergen.

Weergaven maken in MySQL

Nu de syntaxis en de voordelen duidelijk zijn, bouwen de onderstaande stappen een volledig werkende weergave op.

Hieronder volgt een stapsgewijs proces om een ​​weergave te maken in MySQL:

Stap 1) Creëer onze eerste weergave met behulp van de “myflixdb”

Laten we nu onze eerste weergave maken met behulp van "myflixdb". We zullen een eenvoudige weergave maken die de kolommen beperkt die te zien zijn in de ledentabel.

Stel dat de autorisatievereisten voorschrijven dat de financiële afdeling alleen het lidmaatschapsnummer, de naam en het geslacht van het lid mag inzien vanuit de ledentabel. Om dit te bereiken kunt u een VIEW maken.

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

Stap 2) Het knooppunt views uitvouwen

Voer het bovenstaande script uit in MySQL workbench tegen myflixdb en het uitbreiden van het views-knooppunt in de database-explorer geeft ons de volgende resultaten.

Weergaven maken in MySQL

Merk op dat het accounts_v_members-object nu zichtbaar is in de databaseview-objecten.

Stap 3) Voer een SELECT-instructie uit

Laten we nu a uitvoeren SELECT-instructie waarmee alle velden uit de weergave worden geselecteerd, zoals hieronder weergegeven MySQL bekijk voorbeeld maken.

SELECT * FROM `accounts_v_members`;

Stap 4) Voer een script uit

Voer het bovenstaande script uit in MySQL workbench tegen myflixdb geeft ons de volgende resultaten, zoals hieronder 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 boekhouding zijn weergegeven. Andere gegevens in de ledenlijst zijn verborgen.

Als we de SQL-instructies willen zien waaruit een bepaalde weergave bestaat, kunnen we daarvoor het onderstaande script gebruiken.

SHOW CREATE VIEW `accounts_v_members`;

Als u het bovenstaande script uitvoert, krijgt u de weergavenaam en de SQL SELECT-instructies die zijn gebruikt om de weergave te maken.

Voegt zich bij en bekijkt in MySQL

Een weergave van één tabel is het eenvoudigste geval. Weergaven worden veel waardevoller wanneer ze een query over meerdere tabellen omvatten.

Laten we nu eens kijken naar een vrij complex voorbeeld dat meerdere tabellen en toepassingen omvat sluit zich aan.

We zullen de gemaakte JOIN verpakken die informatie uit drie (3) tabellen haalt, namelijk leden, films en filmverhuur. Hieronder vindt u het script dat ons helpt 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 in onze myflixdb gemaakt

Laten we nu alle velden selecteren uit een tabel met de naam general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Voer het bovenstaande script uit in MySQL werkbank tegen myflixdb geeft ons de volgende resultaten, zoals hieronder 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

Let op, we hoefden de complexe JOIN-query niet te schrijven om informatie over leden, films en filmverhuurdetails te krijgen. We gebruikten de view gewoon in een gewone SELECT-instructie, net als elke andere gewone tabel. De view kan overal in het applicatiesysteem worden aangeroepen dat boven op myflixdb draait.

Valping Uitzicht in MySQL

Het DROP-commando kan worden gebruikt om een ​​weergave uit het databank dat is niet meer nodig. De basissyntaxis voor het verwijderen van een weergave is als volgt.

DROP VIEW `general_v_movie_rentals`;

Valping Een view verwijdert alleen de opgeslagen query; de onderliggende tabellen en hun gegevens blijven onaangeraakt.

Veelgestelde vragen

Soms. INSERT, UPDATE en DELETE werken alleen op eenvoudige weergaven die elke NOT NULL-kolom van de basistabel bevatten. Weergaven die zijn gebouwd op basis van joins of aggregatiefuncties kunnen niet worden bijgewerkt.

Een tabel slaat rijen fysiek op de schijf op. Een view slaat alleen een SELECT-statement op en herbouwt de rijen bij elke query, zodat deze altijd de actuele gegevens in de basistabellen weergeeft.

Nee. Een view voert de onderliggende SELECT-query bij elke aanroep uit, dus de prestaties komen overeen met die van de oorspronkelijke query. MySQL Het bevat geen gematerialiseerde weergaven en de snelheid is nog steeds afhankelijk van de indexen in de basistabel.

Ja. AI-assistenten in tools zoals MySQL Werkbank Je kunt een CREATE VIEW-instructie opstellen op basis van een beschrijving. Controleer de kolomlijst en de koppelingssleutels voordat je de instructie uitvoert.

Gedeeltelijk. AI kan gevoelige kolommen, zoals kaartnummers, markeren en een veiligere lijst met kolommen voorstellen. De uiteindelijke beslissing moet echter nog steeds in overeenstemming zijn met het gegevenstoegangsbeleid van uw organisatie.

Vat dit bericht samen met: