MySQL Visninger: Hvordan lage visning fra tabeller med eksempler
Hva er visninger i MySQL?
uTSIKT er virtuelle tabeller som ikke lagrer egne data, men viser data lagret i andre tabeller. Med andre ord, VIEWS er ingenting annet enn SQL-spørringer. En visning kan inneholde alle eller noen få rader fra en tabell. EN MySQL visning kan vise data fra én tabell eller mange tabeller.
MySQL Syntaks for visninger
La oss nå se på den grunnleggende syntaksen som brukes til å lage en visning i MySQL.
CREATE VIEW `view_name` AS SELECT statement;
HVOR
- "LAG VISNING `view_name`" forteller MySQL server for å lage et visningsobjekt i databasen kalt "visningsnavn".
- "AS SELECT-setning" er SQL-setningene som skal pakkes i MySQL Visninger. Det kan være en SELECT-setning som kan inneholde data fra én tabell eller flere tabeller.
Hvordan lage visninger i MySQL
Følgende er en trinnvis prosess for å opprette visning i MySQL:
Trinn 1) Lag vår første visning ved å bruke "myflixdb"
La oss nå lage vår første visning ved å bruke "myflixdb", vi vil lage en enkel visning som begrenser kolonnene som vises i medlemstabellen.
Anta at autorisasjonskrav sier at regnskapsavdelingen kun kan se medlemsnummer, navn og kjønn fra medlemmets tabell. For å oppnå dette kan du opprette en VIEW –
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Trinn 2) Utvider visningsnoden
Utfører skriptet ovenfor i MySQL arbeidsbenk mot myflixdb og utvidelse av visningsnoden i databaseutforskeren gir oss følgende resultater.
Merk at accounts_v_members-objektet nå er synlig i databasevisningsobjektene.
Trinn 3) Utfør en SELECT-setning
La oss nå utføre en SELECT-setning som velger alle feltene fra visningen som vist nedenfor MySQL lage visningseksempel.
SELECT * FROM `accounts_v_members`;
Trinn 4) Utfør et skript
Utfører skriptet ovenfor i MySQL workbench mot myflixdb gir oss 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 autoriserte kolonnene for regnskapsavdelingen er returnert. Andre detaljer funnet i medlemstabellen har blitt skjult.
Hvis vi ønsker å se SQL-setningene som utgjør en bestemt visning, kan vi bruke skriptet vist nedenfor for å gjøre det.
SHOW CREATE VIEW `accounts_v_members`;
Utførelse av skriptet ovenfor gir deg visningsnavnet og SQL SELECT-setningene som brukes til å opprette visningen.
Blir med og ser inn MySQL
La oss nå se på et ganske komplekst eksempel som involverer flere tabeller og bruksområder tiltrer.
Vi vil pakke JOIN opprettet som får informasjon fra tre (3) tabeller, nemlig medlemmer, filmer og filmutleie. Nedenfor er manuset som hjelper oss å oppnå 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 å kjøre skriptene ovenfor opprettes visningen som heter general_v_movie_rentals i myflixdb
La oss nå velge alle feltene fra en tabell som heter general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Utfører skriptet ovenfor i MySQL arbeidsbenk mot myflixdb gir oss 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 |
Merk at vi ikke trengte å skrive den komplekse BLI MED-forespørselen for å få informasjon om medlemmer, filmer og detaljer om leie av filmer. Vi brukte ganske enkelt visningen i en vanlig SELECT-setning som en hvilken som helst annen vanlig tabell. Visningen kan kalles opp fra hvor som helst i applikasjonssystemet som kjører på toppen av myflixdb.
Slipper visninger inn MySQL
DROP-kommandoen kan brukes til å slette en visning fra database som ikke lenger er nødvendig. Den grunnleggende syntaksen for å slippe en visning er som følger.
DROP VIEW ` general_v_movie_rentals `;
Hvorfor bruke visninger?
Det kan være lurt å bruke visninger primært av følgende tre grunner
- Til syvende og sist vil du bruke din SQL kunnskap, for å lage applikasjoner, som vil bruke en database for datakrav. Det anbefales at du bruker VIEWS av den opprinnelige tabellstrukturen i programmet i stedet for å bruke selve tabellene. Dette sikrer at når du refaktoriserer DB-en din, vil den eldre koden din se det originale skjemaet via visningen uten å ødelegge applikasjonen.
- VISNINGER øker gjenbrukbarheten. Du trenger ikke lage komplekse søk som involverer sammenføyninger gjentatte ganger. All kompleksiteten er konvertert til en enkelt linje med spørring, bruk VIEWS. Slik kondensert kode vil være lettere å integrere i applikasjonen din. Dette vil eliminere sjansene for skrivefeil og koden din vil være mer lesbar.
- VISNINGER hjelper med datasikkerhet. Du kan bruke visninger til å vise kun autorisert informasjon til brukere og skjule sensitive data som kredittkortnumre.
Sammendrag
- Visninger er virtuelle tabeller; de inneholder ikke dataene som returneres. Dataene lagres i tabellene det refereres til i SELECT-setningen.
- Visninger forbedrer sikkerheten til databasen ved å vise kun tiltenkte data til autoriserte brukere. De skjuler sensitive data.
- Visninger gjør livet enkelt siden du ikke trenger å skrive komplekse søk gang på gang.
- Det er mulig å bruke INSERT, UPDATE og DELETE på en VIEW. Disse operasjonene vil endre de underliggende tabellene i VIEW. Den eneste vurderingen er at VIEW skal inneholde alle NOT NULL-kolonner i tabellene den refererer til. Ideelt sett bør du ikke bruke VIEWS for oppdatering.