MySQL Visninger: Sådan opretter du visning fra tabeller med eksempler

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.

Sådan opretter du visninger i MySQL

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 autorisationskrav siger, at regnskabsafdelingen kun kan se medlemsnummer, navn og køn fra medlemmets tabel. For at opnå dette kan du oprette en VIEW –

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 detaljer 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

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.

Dropper visninger 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 `;

Hvorfor bruge visninger?

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

  • I sidste ende vil du bruge din SQL viden, til at skabe applikationer, som vil bruge en database til datakrav. Det anbefales, at du bruger VIEWS af den originale tabelstruktur i din applikation i stedet for at bruge selve tabellerne. Dette sikrer, at når du refaktoriserer din DB, vil din ældre kode se det originale skema via visningen uden at bryde 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.

Resumé

  • Visninger er virtuelle tabeller; de indeholder ikke de data, der returneres. Dataene gemmes i tabellerne, der henvises til i SELECT-sætningen.
  • Visninger forbedrer sikkerheden af ​​databasen ved kun at vise tilsigtede data til autoriserede brugere. De skjuler følsomme data.
  • Visninger gør livet nemt, da du ikke skal skrive komplekse forespørgsler igen og igen.
  • Det er muligt at bruge INSERT, UPDATE og DELETE på en VIEW. Disse operationer vil ændre de underliggende tabeller i VIEW. Den eneste overvejelse er, at VIEW skal indeholde alle NOT NULL-kolonner i de tabeller, den refererer til. Ideelt set bør du ikke bruge VIEWS til opdatering.