MySQL Visninger: Sådan opretter du en visning fra tabeller

⚡ Smart opsummering

MySQL Visninger er virtuelle tabeller, der ikke lagrer deres egne data, men i stedet præsenterer resultatet af en gemt SELECT-forespørgsel. Denne ressource forklarer, hvordan man opretter, forespørger, joiner og sletter visninger med kørbare eksempler fra myflixdb-databasen.

  • 🧱 Kernedefinition: En view er en navngiven SELECT-sætning, der opfører sig som en tabel, men ikke indeholder data.
  • 🔐 Sikkerhedsfordel: Visninger viser kun de autoriserede kolonner og holder følsomme felter skjult for brugerne.
  • ♻️ Fordel ved genbrug: En kompleks JOIN med flere tabeller skrives én gang og genbruges som en SELECT-funktion på én linje.
  • 🛠️ Oprettelsessyntaks: CREATE VIEW `view_name` AS SELECT-sætningen definerer visningen i databasen.
  • 🗑️ Livscykluskommandoer: VIS OPRET VIEW viser den gemte forespørgsel, og DROP VIEW sletter den uden at røre basistabellerne.

MySQL Views

Hvad er visninger i MySQL?

VISNINGER er virtuelle tabeller, der ikke gemmer deres egne data, men viser data gemt i andre tabeller. Med andre ord er VIEWS intet andet end SQL Queries. En visning kan indeholde alle eller nogle få rækker fra en tabel. EN MySQL visning kan vise data fra én tabel eller mange tabeller.

MySQL Syntaks

Lad os nu se på den grundlæggende syntaks, der bruges til at oprette en visning i MySQL.

CREATE VIEW `view_name` AS SELECT statement;

HVOR

  • "CREATE VIEW `view_name`" fortæller MySQL server for at oprette et visningsobjekt i databasen med navnet `view_name`
  • "AS SELECT-sætning" er de SQL-sætninger, der skal pakkes i MySQL Visninger. Det kan være en SELECT-sætning, der kan indeholde data fra en tabel eller flere tabeller.

Hvorfor bruge visninger?

Før du bygger en, er det en god idé at vide, hvad en visning rent faktisk giver dig.

Du vil måske primært bruge visninger af følgende 3 grunde

  • I sidste ende vil du bruge din SQL viden, til at oprette applikationer, der bruger en database til datakrav. Det anbefales, at du bruger VIEWS af den oprindelige tabelstruktur i din applikation i stedet for at bruge selve tabellerne. Dette sikrer, at når du refaktorerer din database, vil din ældre kode se det oprindelige skema via viewet uden at ødelægge applikationen.
  • VIEWS øger genbrugbarheden. Du behøver ikke oprette komplekse forespørgsler, der involverer joinforbindelser gentagne gange. Al kompleksiteten er konverteret til en enkelt linje med forespørgsel brug VIEWS. Sådan komprimeret kode vil være lettere at integrere i din applikation. Dette vil eliminere chancerne for stavefejl, og din kode vil være mere læsbar.
  • VIEWS hjælper med datasikkerhed. Du kan bruge visninger til kun at vise autoriserede oplysninger til brugere og skjule følsomme data som kreditkortnumre.

Sådan opretter du visninger i MySQL

Med syntaksen og fordelene etableret, opbygger nedenstående trin en arbejdsvisning fra start til slut.

Følgende er en trin-for-trin-proces til at oprette visning i MySQL:

Trin 1) Opret vores første visning ved hjælp af "myflixdb"

Lad os nu oprette vores første visning ved hjælp af "myflixdb", vi vil skabe en simpel visning, der begrænser kolonnerne, der ses i medlemstabellen.

Antag at autorisationskravene angiver, at regnskabsafdelingen kun kan se medlemsnummer, navn og køn fra medlemmets tabel. For at opnå dette kan du oprette en VISNING –

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

Trin 2) Udvidelse af visningsknuden

Udførelse af ovenstående script i MySQL workbench mod myflixdb og udvidelse af visningsknuden i databasestifinderen giver os følgende resultater.

Opret visninger i MySQL

Bemærk, at accounts_v_members-objektet nu er synligt i databasevisningsobjekterne.

Trin 3) Udfør en SELECT-sætning

Lad os nu udføre en SELECT erklæring der vælger alle felterne fra visningen som vist i nedenstående MySQL skabe visningseksempel.

SELECT * FROM `accounts_v_members`;

Trin 4) Udfør et script

Udførelse af ovenstående script i MySQL workbench mod myflixdb giver os følgende resultater vist nedenfor.

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

Kun de autoriserede kolonner for regnskabsafdelingen er blevet returneret. Andre oplysninger, der blev fundet i medlemstabellen, er blevet skjult.

Hvis vi ønsker at se de SQL-sætninger, der udgør en bestemt visning, kan vi bruge scriptet vist nedenfor til at gøre det.

SHOW CREATE VIEW `accounts_v_members`;

Udførelse af ovenstående script giver dig visningsnavnet og SQL SELECT-sætningerne, der bruges til at oprette visningen.

Deltager og ser ind MySQL

En enkelt tabelvisning er det enkleste tilfælde. Visninger bliver langt mere værdifulde, når de omslutter en forespørgsel med flere tabeller.

Lad os nu se på et ret komplekst eksempel, som involverer flere tabeller og anvendelser slutter.

Vi vil pakke den oprettede JOIN, der får information fra tre (3) borde, nemlig medlemmer, film og lejefilm. Nedenfor er scriptet, der hjælper os med at opnå 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`;

Ved at udføre ovenstående scripts oprettes visningen med navnet general_v_movie_rentals i vores myflixdb

Lad os nu vælge alle felterne fra en tabel med navnet general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Udførelse af ovenstående script i MySQL arbejdsbord mod myflixdb giver os følgende resultater vist nedenfor.

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

Bemærk, at vi ikke behøvede at skrive den komplekse JOIN-forespørgsel for at få oplysninger om medlemmer, film og oplysninger om filmleje. Vi brugte simpelthen visningen i en almindelig SELECT-sætning som enhver anden almindelig tabel. Visningen kan kaldes fra hvor som helst i applikationssystemet, der kører oven på myflixdb.

Dropping Visninger i MySQL

DROP-kommandoen kan bruges til at slette en visning fra database det er ikke længere nødvendigt. Den grundlæggende syntaks for at droppe en visning er som følger.

DROP VIEW `general_v_movie_rentals`;

Dropping En visning fjerner kun den gemte forespørgsel; de underliggende tabeller og deres data forbliver uberørte.

Ofte Stillede Spørgsmål

Nogle gange fungerer INSERT, UPDATE og DELETE kun på simple visninger, der indeholder alle NOT NULL-kolonner i basistabellen. Visninger, der er bygget på joins eller aggregeringsfunktioner, kan ikke opdateres.

En tabel gemmer fysisk rækker på disken. En view gemmer kun en SELECT-sætning og genopbygger dens rækker i hver forespørgsel, så den altid afspejler aktuelle data i basistabellerne.

Nej. En visning kører sin underliggende SELECT ved hvert kald, så ydeevnen matcher den oprindelige forespørgsel. MySQL har ingen materialiserede visninger, og hastigheden afhænger stadig af basistabelindekserne.

Ja. AI-assistenter i værktøjer som f.eks. MySQL Workbench kan udarbejde en CREATE VIEW-sætning ud fra en beskrivelse. Bekræft kolonnelisten og join-nøglerne, før den køres.

Delvist. AI kan markere følsomme kolonner, såsom kortnumre, og foreslå en mere sikker kolonneliste. Den endelige beslutning skal stadig følge din organisations dataadgangspolitik.

Opsummer dette indlæg med: