MySQL Views: How to Create View from Tables

โšก Smart opsummering

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.

  • ๐Ÿงฑ Kernedefinition: 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 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?

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

Du vil mรฅske primรฆrt bruge visninger af fรธlgende 3 grunde

  • 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.
  • 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

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

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.

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

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

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

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

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

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 a view removes only the stored query; the underlying tables and their data are untouched.

Ofte Stillede Spรธrgsmรฅl

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.

Opsummer dette indlรฆg med: