MySQL Views: How to Create View from Tables

โšก Inteligentne podsumowanie

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.

  • ๐Ÿงฑ Definicja podstawowa: 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 odwiedzajacy

W czym sฤ… widoki MySQL?

POGLฤ„DY to wirtualne tabele, ktรณre nie przechowujฤ… ลผadnych wล‚asnych danych, ale wyล›wietlajฤ… dane przechowywane w innych tabelach. Innymi sล‚owy, WIDOKI to nic innego jak zapytania SQL. Widok moลผe zawieraฤ‡ wszystkie lub kilka wierszy tabeli. A MySQL widok moลผe pokazywaฤ‡ dane z jednej tabeli lub wielu tabel.

MySQL Skล‚adnia widokรณw

Przyjrzyjmy siฤ™ teraz podstawowej skล‚adni uลผywanej do tworzenia widoku w MySQL.

CREATE VIEW `view_name` AS SELECT statement;

WHERE

  • โ€žUTWร“RZ WIDOK โ€žnazwa_widokuโ€โ€ mรณwi MySQL serwer, aby utworzyฤ‡ obiekt widoku w bazie danych o nazwie `nazwa_widoku`
  • โ€žOล›wiadczenie AS SELECTโ€ to instrukcje SQL, ktรณre majฤ… byฤ‡ spakowane w pliku MySQL Wyล›wietlenia. Moลผe to byฤ‡ instrukcja SELECT, ktรณra moลผe zawieraฤ‡ dane z jednej tabeli lub wielu tabel.

Dlaczego warto korzystaฤ‡ z widokรณw?

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

Widoki moลผesz chcieฤ‡ uลผywaฤ‡ gล‚รณwnie z nastฤ™pujฤ…cych 3 powodรณw

  • 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 zwiฤ™kszajฤ… moลผliwoล›ฤ‡ ponownego uลผycia. Nie bฤ™dziesz musiaล‚ tworzyฤ‡ zล‚oลผonych zapytaล„ obejmujฤ…cych ล‚ฤ…czenia wielokrotnie. Caล‚a zล‚oลผonoล›ฤ‡ jest konwertowana do pojedynczego wiersza zapytania za pomocฤ… VIEWS. Taki skondensowany kod bฤ™dzie ล‚atwiejszy do zintegrowania w Twojej aplikacji. Wyeliminuje to ryzyko literรณwek, a Twรณj kod bฤ™dzie bardziej czytelny.
  • VIEWS pomagajฤ… w zabezpieczaniu danych. Moลผesz uลผywaฤ‡ widokรณw, aby pokazywaฤ‡ uลผytkownikom tylko autoryzowane informacje i ukrywaฤ‡ poufne dane, takie jak numery kart kredytowych.

Jak tworzyฤ‡ widoki w MySQL

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

Poniลผej przedstawiono krok po kroku proces tworzenia widoku w MySQL:

Krok 1) Utwรณrz nasz pierwszy widok za pomocฤ… โ€žmyflixdbโ€

Stwรณrzmy teraz nasz pierwszy widok za pomocฤ… โ€žmyflixdbโ€. Stworzymy prosty widok, ktรณry ogranicza kolumny widoczne w tabeli czล‚onkรณw.

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

Krok 2) Rozwijanie wฤ™zล‚a widokรณw

Wykonanie powyลผszego skryptu w MySQL workbench z myflixdb i rozwiniฤ™cie wฤ™zล‚a views w eksploratorze bazy danych daje nam nastฤ™pujฤ…ce wyniki.

Utwรณrz widoki w MySQL

Uwaga: obiekt account_v_members jest teraz widoczny w obiektach widokรณw bazy danych.

Krok 3) Wykonaj instrukcjฤ™ SELECT

Wykonajmy teraz a SELECT oล›wiadczenie ktรณry wybiera wszystkie pola z widoku, jak pokazano poniลผej MySQL utwรณrz przykล‚ad widoku.

SELECT * FROM `accounts_v_members`;

Krok 4) Wykonaj skrypt

Wykonanie powyลผszego skryptu w MySQL workbench i myflixdb dajฤ… nam nastฤ™pujฤ…ce wyniki, pokazane poniลผej.

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.

Jeล›li chcemy zobaczyฤ‡ instrukcje SQL tworzฤ…ce konkretny widok, moลผemy w tym celu skorzystaฤ‡ ze skryptu pokazanego poniลผej.

SHOW CREATE VIEW `accounts_v_members`;

Wykonanie powyลผszego skryptu daje nazwฤ™ widoku i instrukcje SQL SELECT uลผyte do utworzenia widoku.

Doล‚ฤ…cza i oglฤ…da w MySQL

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

Przyjrzyjmy siฤ™ teraz doล›ฤ‡ zล‚oลผonemu przykล‚adowi, ktรณry obejmuje wiele tabel i zastosowaล„ ล‚ฤ…czy.

Spakujemy utworzony JOIN, ktรณry pobiera informacje z trzech (3) tabel, a mianowicie czล‚onkรณw, filmรณw i wypoลผyczeล„ filmรณw. Poniลผej znajduje siฤ™ skrypt, ktรณry pomaga nam to osiฤ…gnฤ…ฤ‡.

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

Wykonanie powyลผszych skryptรณw tworzy widok o nazwie general_v_movie_rentals w naszym myflixdb

Wybierzmy teraz wszystkie pola z tabeli o nazwie general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Wykonanie powyลผszego skryptu w MySQL Workbench w stosunku do myflixdb daje nam nastฤ™pujฤ…ce wyniki pokazane poniลผej.

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

Zauwaลผ, ลผe nie musieliล›my pisaฤ‡ zล‚oลผonego zapytania JOIN, aby uzyskaฤ‡ informacje o czล‚onkach, filmach i szczegรณล‚ach wypoลผyczania filmรณw. Po prostu uลผyliล›my widoku w zwykล‚ym poleceniu SELECT, jak kaลผdej innej zwykล‚ej tabeli. Widok moลผna wywoล‚aฤ‡ z dowolnego miejsca w systemie aplikacji dziaล‚ajฤ…cym na myflixdb.

Spadekping Widoki w MySQL

Polecenie DROP moลผe zostaฤ‡ uลผyte do usuniฤ™cia widoku z pliku baza danych to nie jest juลผ wymagane. Podstawowa skล‚adnia upuszczania widoku jest nastฤ™pujฤ…ca.

DROP VIEW `general_v_movie_rentals`;

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

FAQ

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.

Podsumuj ten post nastฤ™pujฤ…co: