MySQL Views: How to Create View from Tables

โšก Okos รถsszefoglalรณ

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.

  • ๐Ÿงฑ Alapvetล‘ definรญciรณ: 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 Nรฉzetek

Miben vannak a nรฉzetek MySQL?

Nร‰ZETEK olyan virtuรกlis tรกblรกk, amelyek nem tรกrolnak sajรกt adatokat, hanem mรกs tรกblรกkban tรกrolt adatokat jelenรญtenek meg. Mรกs szรณval, a VIEWS nem mรกs, mint SQL lekรฉrdezรฉsek. Egy nรฉzet tartalmazhat egy tรกblรกzat รถsszes vagy nรฉhรกny sorรกt. A MySQL nรฉzet egy vagy tรถbb tรกbla adatait is megjelenรญtheti.

MySQL Megtekintรฉsek szintaxisa

Most nรฉzzรผk meg a nรฉzet lรฉtrehozรกsรกhoz hasznรกlt alapvetล‘ szintaxist MySQL.

CREATE VIEW `view_name` AS SELECT statement;

AHOL

  • โ€žNร‰ZET Lร‰TREHOZรSA `view_name`โ€ megmondja MySQL szervert, hogy lรฉtrehozzon egy nรฉzetobjektumot a `view_name` nevลฑ adatbรกzisban
  • โ€žAS SELECT utasรญtรกsโ€ a csomagba csomagolandรณ SQL utasรญtรกsok MySQL Nรฉzetek. Ez lehet egy SELECT utasรญtรกs, amely egy tรกblรกbรณl vagy tรถbb tรกblรกbรณl is tartalmazhat adatokat.

Miรฉrt รฉrdemes nรฉzeteket hasznรกlni?

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

A nรฉzeteket elsล‘sorban a kรถvetkezล‘ 3 ok miatt รฉrdemes hasznรกlni

  • 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.
  • A Nร‰ZETEK nรถvelik az รบjrafelhasznรกlhatรณsรกgot. Nem kell รถsszetett lekรฉrdezรฉseket lรฉtrehoznia, amelyek ismรฉtlล‘dล‘ csatlakozรกsokat tartalmaznak. Az รถsszes bonyolultsรกg egyetlen sor lekรฉrdezรฉssรฉ konvertรกlรณdik a VIEWS hasznรกlatรกval. Az ilyen tรถmรถrรญtett kรณd kรถnnyebben integrรกlhatรณ az alkalmazรกsba. Ez kikรผszรถbรถli az elรญrรกsok esรฉlyรฉt, รฉs a kรณd jobban olvashatรณ lesz.
  • A VIEWS segรญt az adatbiztonsรกgban. A nรฉzetek segรญtsรฉgรฉvel csak engedรฉlyezett informรกciรณkat jelenรญthet meg a felhasznรกlรณk szรกmรกra, รฉs elrejtheti az รฉrzรฉkeny adatokat, pรฉldรกul a hitelkรกrtyaszรกmokat.

Nรฉzetek lรฉtrehozรกsa itt MySQL

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

Az alรกbbiakban egy lรฉpรฉsrล‘l lรฉpรฉsre bemutatjuk a nรฉzet lรฉtrehozรกsรกnak folyamatรกt MySQL:

Step 1) Kรฉszรญtse el elsล‘ nรฉzetรผnket a โ€žmyflixdbโ€ segรญtsรฉgรฉvel

Most hozzuk lรฉtre az elsล‘ nรฉzetรผnket a โ€žmyflixdbโ€ hasznรกlatรกval, รฉs egy egyszerลฑ nรฉzetet hozunk lรฉtre, amely korlรกtozza a tagok tรกblรกjรกban lรกthatรณ oszlopokat.

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

Step 2) A nรฉzetek csomรณpontjรกnak bล‘vรญtรฉse

A fenti szkript vรฉgrehajtรกsa MySQL munkapadot a myflixdb ellen, รฉs az adatbรกzis-kezelล‘ben a nรฉzetek csomรณpontjรกnak kibล‘vรญtรฉsรฉvel a kรถvetkezล‘ eredmรฉnyeket kapjuk.

Nรฉzetek lรฉtrehozรกsa itt MySQL

Vegye figyelembe, hogy az accounts_v_members objektum most mรกr lรกthatรณ az adatbรกzisnรฉzeti objektumokban.

Step 3) Hajtson vรฉgre egy SELECT utasรญtรกst

Most hajtsuk vรฉgre a SELECT utasรญtรกs amely kijelรถli az รถsszes mezล‘t a nรฉzetbล‘l az alรกbbiak szerint MySQL nรฉzet lรฉtrehozรกsa pรฉlda.

SELECT * FROM `accounts_v_members`;

Step 4) Futtasson le egy szkriptet

A fenti szkript vรฉgrehajtรกsa MySQL A myflixdb elleni munkapad az alรกbbi eredmรฉnyeket adja.

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.

Ha egy adott nรฉzetet alkotรณ SQL-utasรญtรกsokat szeretnรฉnk lรกtni, hasznรกlhatjuk az alรกbbi szkriptet.

SHOW CREATE VIEW `accounts_v_members`;

A fenti parancsfรกjl vรฉgrehajtรกsa megadja a nรฉzet nevรฉt รฉs a nรฉzet lรฉtrehozรกsรกhoz hasznรกlt SQL SELECT utasรญtรกsokat.

Csatlakozik รฉs megtekinti MySQL

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

Nรฉzzรผnk most egy meglehetล‘sen รถsszetett pรฉldรกt, amely tรถbb tรกblรกt รฉs felhasznรกlรกst foglal magรกban csatlakozik.

Csomagoljuk a lรฉtrehozott JOIN-t, amely hรกrom (3) tรกblรกzatbรณl kap informรกciรณkat, nevezetesen a tagokrรณl, a filmekrล‘l รฉs a filmkรถlcsรถnzรฉsrล‘l. Az alรกbbiakban lรกthatรณ a forgatรณkรถnyv, amely segรญt ennek elรฉrรฉsรฉben.

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

A fenti szkriptek vรฉgrehajtรกsa lรฉtrehozza a general_v_movie_rentals nevลฑ nรฉzetet a myflixdb-ben

Most jelรถljรผk ki az รถsszes mezล‘t egy general_v_movie_rentals nevลฑ tรกblรกbรณl.

SELECT * FROM `general_v_movie_rentals`;

A fenti szkript vรฉgrehajtรกsa MySQL munkapad a myflixdb ellen az alรกbbi eredmรฉnyeket adjuk.

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

Megjegyzรฉs: nem kellett megรญrnunk az รถsszetett JOIN lekรฉrdezรฉst, hogy informรกciรณkat kapjunk a tagokrรณl, a filmekrล‘l รฉs a filmkรถlcsรถnzรฉs rรฉszleteirล‘l. Egyszerลฑen a nรฉzetet egy szokรกsos SELECT utasรญtรกsban hasznรกltuk, mint bรกrmely mรกs szokรกsos tรกblรกt. A nรฉzet a myflixdb tetejรฉn futรณ alkalmazรกsrendszer bรกrhonnan hรญvhatรณ.

Cseppping Megtekintรฉsek MySQL

A DROP paranccsal tรถrรถlhet egy nรฉzetet a adatbรกzis arra mรกr nincs szรผksรฉg. A nรฉzet eldobรกsรกnak alapvetล‘ szintaxisa a kรถvetkezล‘.

DROP VIEW `general_v_movie_rentals`;

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

GYIK

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.

Foglald รถssze ezt a bejegyzรฉst a kรถvetkezล‘kรฉppen: