MySQL Views: How to Create View from Tables

โšก Smart oppsummering

MySQL Views are virtual tables that store no data of their own and instead present the result of a stored SELECT query. This resource explains how to create, query, join, and drop views, with runnable examples from the myflixdb database.

  • ๐Ÿงฑ Kjernedefinisjon: A view is a named SELECT statement that behaves like a table but holds no data.
  • ๐Ÿ” Security Benefit: Views expose only the authorized columns and keep sensitive fields hidden from users.
  • โ™ป๏ธ Reusability Benefit: A complex multi-table JOIN is written once and reused as a single-line SELECT.
  • ๐Ÿ› ๏ธ Creation Syntax: CREATE VIEW `view_name` AS SELECT statement defines the view inside the database.
  • ๐Ÿ—‘๏ธ Lifecycle Commands: SHOW CREATE VIEW reveals the stored query, and DROP VIEW deletes it without touching the base tables.

MySQL Visninger

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.

Hvorfor bruke visninger?

Before building one, it helps to know what a view actually buys you.

Det kan vรฆre lurt รฅ bruke visninger primรฆrt av fรธlgende tre grunner

  • Ultimately, you will use your SQL knowledge, to create applications, which will use a database for data requirements. Itโ€™s recommended that you use VIEWS of the original table structure in your application instead of using the tables themselves. This ensures that when you refactor your DB, your legacy code will see the original schema via the view without breaking the application.
  • 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.

Hvordan lage visninger i MySQL

With the syntax and the benefits established, the steps below build a working view end to end.

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.

Suppose authorization requirements state that the accounts department can only see memberโ€™s number, name and gender from the memberโ€™s table. To achieve this you can create a 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.

Opprett visninger i MySQL

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

Only the authorized columns for accounts department have been returned. Other details found in the members table have been hidden.

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

A single-table view is the simplest case. Views become far more valuable when they wrap a multi-table query.

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.

Dropping Visninger i 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`;

Dropping a view removes only the stored query; the underlying tables and their data are untouched.

Spรธrsmรฅl og svar

Sometimes. INSERT, UPDATE and DELETE work only on simple views containing every NOT NULL column of the base table. Views built on joins or aggregate functions are not updatable.

A table physically stores rows on disk. A view stores only a SELECT statement and rebuilds its rows on every query, so it always reflects current data in the base tables.

No. A view runs its underlying SELECT on every call, so performance matches the original query. MySQL has no materialized views, and speed still depends on base-table indexes.

Yes. AI assistants in tools such as MySQL Workbench can draft a CREATE VIEW statement from a description. Verify the column list and join keys before running it.

Partly. AI can flag sensitive columns, such as card numbers, and propose a safer column list. The final decision must still follow your organisationโ€™s data access policy.

Oppsummer dette innlegget med: