MySQL Views: How to Create View from Tables

โšก Rezumat inteligent

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.

  • ๐Ÿงฑ Definiศ›ia de bazฤƒ: A view is a named SELECT statement that behaves like a table but holds no data.
  • ๐Ÿ” Avantaj de securitate: 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 Vizualizฤƒri

รŽn ce sunt Views MySQL?

vEDERI sunt tabele virtuale care nu stocheazฤƒ date proprii, ci afiศ™eazฤƒ date stocate รฎn alte tabele. Cu alte cuvinte, VIEWS nu sunt altceva decรขt interogฤƒri SQL. O vizualizare poate conศ›ine toate sau cรขteva rรขnduri dintr-un tabel. A MySQL vizualizarea poate afiศ™a date dintr-un tabel sau mai multe tabele.

MySQL Sintaxa vizualizฤƒrilor

Sฤƒ ne uitฤƒm acum la sintaxa de bazฤƒ folositฤƒ pentru a crea o vizualizare รฎn MySQL.

CREATE VIEW `view_name` AS SELECT statement;

UNDE

  • โ€žCREATE VIEW `view_name`โ€ spune MySQL server pentru a crea un obiect de vizualizare รฎn baza de date numit `view_name`
  • โ€žInstrucศ›iunea AS SELECTโ€ sunt instrucศ›iunile SQL care trebuie รฎmpachetate รฎn MySQL Vizualizฤƒri. Poate fi o instrucศ›iune SELECT care poate conศ›ine date dintr-un tabel sau mai multe tabele.

De ce sฤƒ folosiศ›i vizualizฤƒrile?

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

Poate doriศ›i sฤƒ utilizaศ›i vizualizฤƒrile รฎn principal din urmฤƒtoarele 3 motive

  • 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 mฤƒresc reutilizarea. Nu va trebui sฤƒ creaศ›i interogฤƒri complexe care implicฤƒ รฎmbinฤƒri รฎn mod repetat. Toatฤƒ complexitatea este convertitฤƒ รฎntr-o singurฤƒ linie de interogare folosind VIEWS. Un astfel de cod condensat va fi mai uศ™or de integrat รฎn aplicaศ›ia dvs. Acest lucru va elimina ศ™ansele de greศ™eli de scriere ศ™i codul dvs. va fi mai lizibil.
  • VIEWS ajutฤƒ la securitatea datelor. Puteศ›i utiliza vizualizฤƒrile pentru a afiศ™a numai informaศ›ii autorizate utilizatorilor ศ™i pentru a ascunde datele sensibile, cum ar fi numerele cฤƒrศ›ilor de credit.

Cum se creeazฤƒ vizualizฤƒri รฎn MySQL

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

Urmฤƒtorul este un proces pas cu pas pentru a crea vizualizarea รฎn MySQL:

Pas 1) Creaศ›i prima noastrฤƒ vizualizare folosind โ€žmyflixdbโ€

Acum sฤƒ creฤƒm prima noastrฤƒ vizualizare folosind โ€žmyflixdbโ€, vom crea o vizualizare simplฤƒ care restricศ›ioneazฤƒ coloanele vฤƒzute รฎn tabelul de membri.

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

Pas 2) Extinderea nodului de vizualizฤƒri

Executarea scriptului de mai sus รฎn MySQL workbench รฎmpotriva myflixdb ศ™i extinderea nodului de vizualizฤƒri รฎn exploratorul bazei de date ne oferฤƒ urmฤƒtoarele rezultate.

Creaศ›i vizualizฤƒri รฎn MySQL

Reศ›ineศ›i cฤƒ obiectul accounts_v_members este acum vizibil รฎn obiectele vizualizฤƒrilor bazei de date.

Pas 3) Executaศ›i o instrucศ›iune SELECT

Sฤƒ executฤƒm acum a instrucศ›iunea SELECT care selecteazฤƒ toate cรขmpurile din vizualizare, aศ™a cum se aratฤƒ รฎn mai jos MySQL crearea unui exemplu de vizualizare.

SELECT * FROM `accounts_v_members`;

Pas 4) Executaศ›i un script

Executarea scriptului de mai sus รฎn MySQL Workbench รฎmpotriva myflixdb ne oferฤƒ urmฤƒtoarele rezultate prezentate mai jos.

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.

Dacฤƒ vrem sฤƒ vedem instrucศ›iunile SQL care alcฤƒtuiesc o anumitฤƒ vizualizare, putem folosi scriptul prezentat mai jos pentru a face asta.

SHOW CREATE VIEW `accounts_v_members`;

Executarea scriptului de mai sus vฤƒ oferฤƒ numele vizualizฤƒrii ศ™i instrucศ›iunile SQL SELECT utilizate pentru a crea vizualizarea.

Aderฤƒri ศ™i vizualizฤƒri รฎn MySQL

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

Sฤƒ ne uitฤƒm acum la un exemplu destul de complex care implicฤƒ mai multe tabele ศ™i utilizฤƒri se alฤƒturฤƒ.

Vom รฎmpacheta JOIN-ul creat care obศ›ine informaศ›ii din trei (3) tabele ศ™i anume membri, filme ศ™i รฎnchirieri de filme. Mai jos este scenariul care ne ajutฤƒ sฤƒ realizฤƒm asta.

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

Executarea scripturilor de mai sus creeazฤƒ vizualizarea numitฤƒ general_v_movie_rentals รฎn myflixdb

Sฤƒ selectฤƒm acum toate cรขmpurile dintr-un tabel numit general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Executarea scriptului de mai sus รฎn MySQL banc de lucru รฎmpotriva myflixdb ne oferฤƒ urmฤƒtoarele rezultate prezentate mai jos.

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

Reศ›ineศ›i cฤƒ nu a fost nevoie sฤƒ scriem interogarea complexฤƒ JOIN pentru a obศ›ine informaศ›ii despre membri, filme ศ™i detalii despre รฎnchirierea filmelor. Pur ศ™i simplu am folosit vizualizarea รฎntr-o instrucศ›iune SELECT obiศ™nuitฤƒ ca orice alt tabel obiศ™nuit. Vederea poate fi apelatฤƒ de oriunde รฎn sistemul de aplicaศ›ii care ruleazฤƒ deasupra myflixdb.

Picฤƒturฤƒping Vizualizฤƒri รฎn MySQL

Comanda DROP poate fi folositฤƒ pentru a ศ™terge o vizualizare din Baza de date asta nu mai este necesar. Sintaxa de bazฤƒ pentru a elimina o vizualizare este urmฤƒtoarea.

DROP VIEW `general_v_movie_rentals`;

Picฤƒturฤƒping a view removes only the stored query; the underlying tables and their data are untouched.

รŽntrebฤƒri frecvente

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 Banc de lucru 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.

Rezumaศ›i aceastฤƒ postare cu: