MySQL Views: How to Create View from Tables

โšก Akฤฑllฤฑ ร–zet

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.

  • ๐Ÿงฑ Temel Tanฤฑm: A view is a named SELECT statement that behaves like a table but holds no data.
  • ๐Ÿ” Gรผvenlik Avantajฤฑ: 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 Gรถrรผnรผmler

Gรถrรผnรผmler nelerdir? MySQL?

Gร–RรœNTรœLER kendilerine ait herhangi bir veri depolamayan ancak diฤŸer tablolarda saklanan verileri gรถrรผntรผleyen sanal tablolardฤฑr. BaลŸka bir deyiลŸle VIEWS, SQL Sorgularฤฑndan baลŸka bir ลŸey deฤŸildir. Gรถrรผnรผm, tablonun tรผm satฤฑrlarฤฑnฤฑ veya birkaรง satฤฑrฤฑnฤฑ iรงerebilir. A MySQL gรถrรผnรผm, bir tablodaki veya birรงok tablodaki verileri gรถsterebilir.

MySQL Gรถrรผnรผmler sรถz dizimi

ลžimdi bir gรถrรผnรผm oluลŸturmak iรงin kullanฤฑlan temel sรถzdizimine bakalฤฑm. MySQL.

CREATE VIEW `view_name` AS SELECT statement;

NEREDE

  • โ€œ`Gรถrรผnรผm_adฤฑ` Gร–RรœNรœMรœ OLUลžTURโ€ anlatฤฑr MySQL veritabanฤฑnda "gรถrรผnรผm_adฤฑ" adlฤฑ bir gรถrรผnรผm nesnesi oluลŸturmak iรงin sunucu
  • โ€œAS SELECT ifadesiโ€ paketlenecek SQL ifadeleridir MySQL Gรถrรผntรผleme. Bir SELECT ifadesi olabilir, bir tablodan veya birden fazla tablodan veri iรงerebilir.

Gรถrรผnรผmler neden kullanฤฑlmalฤฑ?

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

Gรถrรผnรผmleri รถncelikle aลŸaฤŸฤฑdaki 3 nedenden dolayฤฑ kullanmak isteyebilirsiniz

  • 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 yeniden kullanฤฑlabilirliฤŸi artฤฑrฤฑr. Tekrar tekrar birleลŸtirme iรงeren karmaลŸฤฑk sorgular oluลŸturmanฤฑz gerekmez. Tรผm karmaลŸฤฑklฤฑk, VIEWS kullanan tek bir sorgu satฤฑrฤฑna dรถnรผลŸtรผrรผlรผr. Bu tรผr yoฤŸunlaลŸtฤฑrฤฑlmฤฑลŸ kod, uygulamanฤฑza entegre edilmesi daha kolay olacaktฤฑr. Bu, yazฤฑm hatasฤฑ olasฤฑlฤฑฤŸฤฑnฤฑ ortadan kaldฤฑracak ve kodunuz daha okunabilir olacaktฤฑr.
  • VIEWS veri gรผvenliฤŸine yardฤฑmcฤฑ olur. Kullanฤฑcฤฑlara yalnฤฑzca yetkili bilgileri gรถstermek ve kredi kartฤฑ numaralarฤฑ gibi hassas verileri gizlemek iรงin gรถrรผnรผmleri kullanabilirsiniz.

Gรถrรผnรผmler Nasฤฑl OluลŸturulur MySQL

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

AลŸaฤŸฤฑda, gรถrรผnรผm oluลŸturmak iรงin adฤฑm adฤฑm bir sรผreรง gรถsterilmektedir MySQL:

) 1 Adฤฑm โ€œmyflixdbโ€yi kullanarak ilk gรถrรผnรผmรผmรผzรผ oluลŸturun

ลžimdi โ€œmyflixdbโ€yi kullanarak ilk viewฤฑmฤฑzฤฑ oluลŸturalฤฑm, รผyeler tablosunda gรถrรผlen sรผtunlarฤฑ kฤฑsฤฑtlayan basit bir view oluลŸturacaฤŸฤฑz.

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

) 2 Adฤฑm Gรถrรผnรผm dรผฤŸรผmรผnรผ geniลŸletme

Yukarฤฑdaki betiฤŸin รงalฤฑลŸtฤฑrฤฑlmasฤฑ MySQL workbench'รผ myflixdb'ye karลŸฤฑ รงalฤฑลŸtฤฑrฤฑp veritabanฤฑ gezginindeki views dรผฤŸรผmรผnรผ geniลŸlettiฤŸimizde aลŸaฤŸฤฑdaki sonuรงlarฤฑ elde ediyoruz.

Gรถrรผnรผmler OluลŸtur MySQL

Accounts_v_members nesnesinin artฤฑk veritabanฤฑ gรถrรผntรผleme nesnelerinde gรถrรผndรผฤŸรผnรผ unutmayฤฑn.

) 3 Adฤฑm Bir SELECT ifadesini yรผrรผtรผn

ลžimdi bir uygulama yapalฤฑm SELECT ifadesi aลŸaฤŸฤฑda gรถsterildiฤŸi gibi gรถrรผnรผmdeki tรผm alanlarฤฑ seรงen MySQL gรถrรผnรผm รถrneฤŸi oluลŸturun.

SELECT * FROM `accounts_v_members`;

) 4 Adฤฑm Bir komut dosyasฤฑnฤฑ yรผrรผtรผn

Yukarฤฑdaki betiฤŸin รงalฤฑลŸtฤฑrฤฑlmasฤฑ MySQL workbench'รผ myflixdb ile karลŸฤฑlaลŸtฤฑrdฤฑฤŸฤฑmฤฑzda aลŸaฤŸฤฑdaki sonuรงlar ortaya รงฤฑkฤฑyor.

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.

Belirli bir gรถrรผnรผmรผ oluลŸturan SQL ifadelerini gรถrmek istiyorsak, bunu yapmak iรงin aลŸaฤŸฤฑda gรถsterilen betiฤŸi kullanabiliriz.

SHOW CREATE VIEW `accounts_v_members`;

Yukarฤฑdaki betiฤŸi รงalฤฑลŸtฤฑrmak size gรถrรผnรผm adฤฑnฤฑ ve gรถrรผnรผmรผ oluลŸturmak iรงin kullanฤฑlan SQL SELECT ifadelerini verir.

Katฤฑlma ve Gรถrรผntรผlemeler MySQL

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

ลžimdi birden fazla tablo ve kullanฤฑm iรงeren oldukรงa karmaลŸฤฑk bir รถrneฤŸe bakalฤฑm katฤฑldฤฑ.

รœyeler, filmler ve film kiralama olmak รผzere รผรง (3) tablodan bilgi alan oluลŸturulan JOIN'i paketleyeceฤŸiz. AลŸaฤŸฤฑda bunu baลŸarmamฤฑza yardฤฑmcฤฑ olan komut dosyasฤฑ bulunmaktadฤฑr.

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

Yukarฤฑdaki komut dosyalarฤฑnฤฑn yรผrรผtรผlmesi myflixdb'mizde general_v_movie_rentals adlฤฑ gรถrรผnรผmรผ oluลŸturur

ลžimdi general_v_movie_rentals adlฤฑ tablodaki tรผm alanlarฤฑ seรงelim.

SELECT * FROM `general_v_movie_rentals`;

Yukarฤฑdaki betiฤŸin รงalฤฑลŸtฤฑrฤฑlmasฤฑ MySQL tezgรขh myflixdb'ye karลŸฤฑ yaptฤฑฤŸฤฑmฤฑz karลŸฤฑlaลŸtฤฑrma bize aลŸaฤŸฤฑda gรถsterilen sonuรงlarฤฑ veriyor.

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

รœyeler, filmler ve film kiralama detaylarฤฑ hakkฤฑnda bilgi almak iรงin karmaลŸฤฑk JOIN sorgusunu yazmamฤฑz gerekmediฤŸini unutmayฤฑn. Gรถrรผnรผmรผ herhangi bir sฤฑradan tablo gibi normal bir SELECT ifadesinde kullandฤฑk. Gรถrรผnรผm, myflixdb'nin รผstรผnde รงalฤฑลŸan uygulama sistemindeki herhangi bir yerden รงaฤŸrฤฑlabilir.

Damlaping Gรถrรผntรผleme sayฤฑsฤฑ MySQL

DROP komutu bir gรถrรผnรผmรผ silmek iรงin kullanฤฑlabilir. veritabanฤฑ buna artฤฑk gerek yok. Bir gรถrรผnรผmรผ bฤฑrakmak iรงin temel sรถzdizimi aลŸaฤŸฤฑdaki gibidir.

DROP VIEW `general_v_movie_rentals`;

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

SSS

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 Tezgรขh 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.

Bu yazฤฑyฤฑ ลŸu ลŸekilde รถzetleyin: