MySQL Views: How to Create View from Tables

โšก Smart sammanfattning

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.

  • ๐Ÿงฑ Kรคrndefinition: 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 Visningar

Vad รคr vyer i MySQL?

VIEWS รคr virtuella tabeller som inte lagrar nรฅgra egna data utan visar data lagrade i andra tabeller. Med andra ord, VIEWS รคr inget annat รคn SQL Queries. En vy kan innehรฅlla alla eller nรฅgra rader frรฅn en tabell. A MySQL vyn kan visa data frรฅn en tabell eller mรฅnga tabeller.

MySQL Syntax fรถr visningar

Lรฅt oss nu titta pรฅ den grundlรคggande syntaxen som anvรคnds fรถr att skapa en vy i MySQL.

CREATE VIEW `view_name` AS SELECT statement;

VAR

  • "SKAPA VY `view_name`" berรคttar MySQL server fรถr att skapa ett vyobjekt i databasen med namnet `view_name`
  • "AS SELECT-sats" รคr SQL-satserna som ska packas i MySQL Visningar. Det kan vara en SELECT-sats som kan innehรฅlla data frรฅn en tabell eller flera tabeller.

Varfรถr anvรคnda vyer?

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

Du kanske vill anvรคnda vyer frรคmst av fรถljande tre anledningar

  • 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 รถkar รฅteranvรคndbarheten. Du behรถver inte skapa komplexa frรฅgor som involverar kopplingar upprepade gรฅnger. All komplexitet omvandlas till en enda rad med frรฅgeanvรคndning VIEWS. Sรฅdan komprimerad kod blir lรคttare att integrera i din applikation. Detta eliminerar risken fรถr stavfel och din kod blir mer lรคsbar.
  • VIEWS hjรคlper till med datasรคkerhet. Du kan anvรคnda vyer fรถr att endast visa behรถrig information fรถr anvรคndare och dรถlja kรคnslig information som kreditkortsnummer.

Hur man skapar vyer i MySQL

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

Fรถljande รคr en steg-fรถr-steg-process fรถr att skapa vy i MySQL:

Steg 1) Skapa vรฅr fรถrsta vy med "myflixdb"

Lรฅt oss nu skapa vรฅr fรถrsta vy med hjรคlp av "myflixdb", vi kommer att skapa en enkel vy som begrรคnsar kolumnerna som 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`;

Steg 2) Expandera vynoden

Exekvera skriptet ovan i MySQL arbetsbรคnk mot myflixdb och utรถka visningsnoden i databasutforskaren ger oss fรถljande resultat.

Skapa vyer i MySQL

Observera att objektet accounts_v_members nu รคr synligt i databasvyobjekten.

Steg 3) Kรถr en SELECT-sats

Lรฅt oss nu kรถra en SELECT-sats som vรคljer alla fรคlt frรฅn vyn som visas i nedan MySQL skapa vyexempel.

SELECT * FROM `accounts_v_members`;

Steg 4) Kรถr ett skript

Exekvera skriptet ovan i MySQL workbench mot myflixdb ger oss fรถljande resultat som visas nedan.

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.

Om vi โ€‹โ€‹vill se SQL-satserna som utgรถr en viss vy kan vi anvรคnda skriptet som visas nedan fรถr att gรถra det.

SHOW CREATE VIEW `accounts_v_members`;

Genom att kรถra skriptet ovan fรฅr du vynnamnet och SQL SELECT-satserna som anvรคnds fรถr att skapa vyn.

Gรฅr med och tittar in MySQL

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

Lรฅt oss nu titta pรฅ ett ganska komplext exempel som involverar flera tabeller och anvรคndningsomrรฅden fรถrenar.

Vi kommer att paketera den skapade JOIN som fรฅr information frรฅn tre (3) tabeller nรคmligen medlemmar, filmer och filmuthyrning. Nedan รคr manuset som hjรคlper oss att uppnรฅ 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`;

Genom att kรถra ovanstรฅende skript skapas vyn med namnet general_v_movie_rentals i vรฅr myflixdb

Lรฅt oss nu vรคlja alla fรคlt frรฅn en tabell som heter general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Exekvera skriptet ovan i MySQL arbetsbรคnk mot myflixdb ger oss fรถljande resultat som visas nedan.

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

Observera att vi inte behรถvde skriva den komplexa JOIN-frรฅgan fรถr att fรฅ information om medlemmar, filmer och information om hyrfilmer. Vi anvรคnde helt enkelt vyn i en vanlig SELECT-sats som vilken annan vanlig tabell som helst. Vyn kan anropas frรฅn var som helst i applikationssystemet som kรถrs ovanpรฅ myflixdb.

Dropping Visningar i MySQL

Kommandot DROP kan anvรคndas fรถr att ta bort en vy frรฅn databas som inte lรคngre behรถvs. Den grundlรคggande syntaxen fรถr att slรคppa en vy รคr som fรถljer.

DROP VIEW `general_v_movie_rentals`;

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

Vanliga frรฅgor

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 Arbetsbรคnk 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.

Sammanfatta detta inlรคgg med: