MySQL Views: How to Create View from Tables
โก ะฃะผะฝะพะต ัะตะทัะผะต
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.

ะงัะพ ัะฐะบะพะต ะฟัะพัะผะพััั MySQL?
ะะ ะะกะะะขะ ะซ โ ััะพ ะฒะธัััะฐะปัะฝัะต ัะฐะฑะปะธัั, ะบะพัะพััะต ะฝะต ั ัะฐะฝัั ะฝะธะบะฐะบะธั ัะพะฑััะฒะตะฝะฝัั ะดะฐะฝะฝัั , ะฐ ะพัะพะฑัะฐะถะฐัั ะดะฐะฝะฝัะต, ั ัะฐะฝััะธะตัั ะฒ ะดััะณะธั ัะฐะฑะปะธัะฐั . ะััะณะธะผะธ ัะปะพะฒะฐะผะธ, ะะ ะะะกะขะะะะะะะฏ โ ััะพ ะฝะต ััะพ ะธะฝะพะต, ะบะฐะบ SQL-ะทะฐะฟัะพัั. ะัะตะดััะฐะฒะปะตะฝะธะต ะผะพะถะตั ัะพะดะตัะถะฐัั ะฒัะต ะธะปะธ ะฝะตัะบะพะปัะบะพ ัััะพะบ ัะฐะฑะปะธัั. ะ MySQL ะัะตะดััะฐะฒะปะตะฝะธะต ะผะพะถะตั ะพัะพะฑัะฐะถะฐัั ะดะฐะฝะฝัะต ะธะท ะพะดะฝะพะน ัะฐะฑะปะธัั ะธะปะธ ะฝะตัะบะพะปัะบะธั ัะฐะฑะปะธั.
MySQL ะกะธะฝัะฐะบัะธั ะฟัะตะดััะฐะฒะปะตะฝะธะน
ะะฐะฒะฐะนัะต ัะตะฟะตัั ะฟะพัะผะพััะธะผ ะฝะฐ ะพัะฝะพะฒะฝะพะน ัะธะฝัะฐะบัะธั, ะธัะฟะพะปัะทัะตะผัะน ะดะปั ัะพะทะดะฐะฝะธั ะฟัะตะดััะฐะฒะปะตะฝะธั ะฒ MySQL.
CREATE VIEW `view_name` AS SELECT statement;
ะะะ
- ยซะกะะะะะขะฌ ะะ ะะะกะขะะะะะะะ `view_name`ยป ะณะพะฒะพัะธั MySQL ัะตัะฒะตั ะดะปั ัะพะทะดะฐะฝะธั ะพะฑัะตะบัะฐ ะฟัะตะดััะฐะฒะปะตะฝะธั ะฒ ะฑะฐะทะต ะดะฐะฝะฝัั ั ะธะผะตะฝะตะผ `view_name`
- ยซะะฟะตัะฐัะพั AS SELECTยป ััะพ ะพะฟะตัะฐัะพัั SQL, ะบะพัะพััะต ะดะพะปะถะฝั ะฑััั ัะฟะฐะบะพะฒะฐะฝั ะฒ MySQL ะะทะณะปัะดั. ะญัะพ ะผะพะถะตั ะฑััั ะพะฟะตัะฐัะพั SELECT, ะบะพัะพััะน ะผะพะถะตั ัะพะดะตัะถะฐัั ะดะฐะฝะฝัะต ะธะท ะพะดะฝะพะน ัะฐะฑะปะธัั ะธะปะธ ะฝะตัะบะพะปัะบะธั ัะฐะฑะปะธั.
ะะฐัะตะผ ะธัะฟะพะปัะทะพะฒะฐัั ะฟัะตะดััะฐะฒะปะตะฝะธั?
Before building one, it helps to know what a view actually buys you.
ะะพะทะผะพะถะฝะพ, ะฒั ะทะฐั ะพัะธัะต ะธัะฟะพะปัะทะพะฒะฐัั ะฟัะตะดััะฐะฒะปะตะฝะธั ะฒ ะฟะตัะฒัั ะพัะตัะตะดั ะฟะพ ัะปะตะดัััะธะผ ััะตะผ ะฟัะธัะธะฝะฐะผ.
- 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. ะขะฐะบะพะน ัะถะฐััะน ะบะพะด ะฑัะดะตั ะปะตะณัะต ะธะฝัะตะณัะธัะพะฒะฐัั ะฒ ะฒะฐัะต ะฟัะธะปะพะถะตะฝะธะต. ะญัะพ ััััะฐะฝะธั ะฒะตัะพััะฝะพััั ะพะฟะตัะฐัะพะบ ะธ ะฒะฐั ะบะพะด ััะฐะฝะตั ะฑะพะปะตะต ัะธัะฐะฑะตะปัะฝัะผ.
- VIEWS ะฟะพะผะพะณะฐัั ะพะฑะตัะฟะตัะธัั ะฑะตะทะพะฟะฐัะฝะพััั ะดะฐะฝะฝัั . ะั ะผะพะถะตัะต ะธัะฟะพะปัะทะพะฒะฐัั ะฟัะตะดััะฐะฒะปะตะฝะธั, ััะพะฑั ะฟะพะบะฐะทัะฒะฐัั ะฟะพะปัะทะพะฒะฐัะตะปัะผ ัะพะปัะบะพ ัะฐะทัะตัะตะฝะฝัั ะธะฝัะพัะผะฐัะธั ะธ ัะบััะฒะฐัั ะบะพะฝัะธะดะตะฝัะธะฐะปัะฝัะต ะดะฐะฝะฝัะต, ัะฐะบะธะต ะบะฐะบ ะฝะพะผะตัะฐ ะบัะตะดะธัะฝัั ะบะฐัั.
ะะฐะบ ัะพะทะดะฐะฒะฐัั ะฟัะตะดััะฐะฒะปะตะฝะธั ะฒ MySQL
With the syntax and the benefits established, the steps below build a working view end to end.
ะะธะถะต ะฟัะธะฒะตะดะตะฝ ะฟะพัะฐะณะพะฒัะน ะฟัะพัะตัั ัะพะทะดะฐะฝะธั ะฟัะตะดััะฐะฒะปะตะฝะธั. MySQL:
ะจะฐะณ 1) ะกะพะทะดะฐะนัะต ะฝะฐัะต ะฟะตัะฒะพะต ะฟัะตะดััะฐะฒะปะตะฝะธะต, ะธัะฟะพะปัะทัั ยซmyflixdbยป.
ะะฐะฒะฐะนัะต ัะตะฟะตัั ัะพะทะดะฐะดะธะผ ะฝะฐัะต ะฟะตัะฒะพะต ะฟัะตะดััะฐะฒะปะตะฝะธะต, ะธัะฟะพะปัะทัั ยซmyflixdbยป. ะั ัะพะทะดะฐะดะธะผ ะฟัะพััะพะต ะฟัะตะดััะฐะฒะปะตะฝะธะต, ะบะพัะพัะพะต ะพะณัะฐะฝะธัะธะฒะฐะตั ััะพะปะฑัั, ะฒะธะดะธะผัะต ะฒ ัะฐะฑะปะธัะต ััะฐััะฝะธะบะพะฒ.
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) ะ ะฐััะธัะตะฝะธะต ัะทะปะฐ ะฟัะตะดััะฐะฒะปะตะฝะธะน
ะัะฟะพะปะฝะตะฝะธะต ะฟัะธะฒะตะดะตะฝะฝะพะณะพ ะฒััะต ััะตะฝะฐัะธั ะฒ MySQL Workbench ั myflixdb ะธ ัะฐััะธัะตะฝะธะต ัะทะปะฐ ะฟัะตะดััะฐะฒะปะตะฝะธะน ะฒ ะพะฑะพะทัะตะฒะฐัะตะปะต ะฑะฐะท ะดะฐะฝะฝัั ะดะฐะตั ะฝะฐะผ ัะปะตะดัััะธะต ัะตะทัะปััะฐัั.
ะะฑัะฐัะธัะต ะฒะฝะธะผะฐะฝะธะต, ััะพ ะพะฑัะตะบั account_v_members ัะตะฟะตัั ะฒะธะดะตะฝ ะฒ ะพะฑัะตะบัะฐั ะฟัะตะดััะฐะฒะปะตะฝะธะน ะฑะฐะทั ะดะฐะฝะฝัั .
ะจะฐะณ 3) ะัะฟะพะปะฝะธัั ะพะฟะตัะฐัะพั SELECT
ะะฐะฒะฐะนัะต ัะตะฟะตัั ะฒัะฟะพะปะฝะธะผ ะะฟะตัะฐัะพั SELECT ะบะพัะพััะน ะฒัะฑะธัะฐะตั ะฒัะต ะฟะพะปั ะธะท ะฟัะตะดััะฐะฒะปะตะฝะธั, ะบะฐะบ ะฟะพะบะฐะทะฐะฝะพ ะฝะธะถะต. MySQL ัะพะทะดะฐัั ะฟัะธะผะตั ะฟัะพัะผะพััะฐ.
SELECT * FROM `accounts_v_members`;
ะจะฐะณ 4) ะัะฟะพะปะฝะธัั ัะบัะธะฟั
ะัะฟะพะปะฝะตะฝะธะต ะฟัะธะฒะตะดะตะฝะฝะพะณะพ ะฒััะต ััะตะฝะฐัะธั ะฒ MySQL Workbench ะฟัะพัะธะฒ myflixdb ะดะฐะตั ะฝะฐะผ ัะปะตะดัััะธะต ัะตะทัะปััะฐัั, ะฟะพะบะฐะทะฐะฝะฝัะต ะฝะธะถะต.
| 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.
ะัะปะธ ะผั ั ะพัะธะผ ัะฒะธะดะตัั ะพะฟะตัะฐัะพัั SQL, ัะพััะฐะฒะปัััะธะต ะพะฟัะตะดะตะปะตะฝะฝะพะต ะฟัะตะดััะฐะฒะปะตะฝะธะต, ะผั ะผะพะถะตะผ ะธัะฟะพะปัะทะพะฒะฐัั ะดะปั ััะพะณะพ ััะตะฝะฐัะธะน, ะฟะพะบะฐะทะฐะฝะฝัะน ะฝะธะถะต.
SHOW CREATE VIEW `accounts_v_members`;
ะัะฟะพะปะฝะตะฝะธะต ะฟัะธะฒะตะดะตะฝะฝะพะณะพ ะฒััะต ััะตะฝะฐัะธั ะดะฐะตั ะฒะฐะผ ะธะผั ะฟัะตะดััะฐะฒะปะตะฝะธั ะธ ะธะฝััััะบัะธะธ SQL SELECT, ะธัะฟะพะปัะทัะตะผัะต ะดะปั ัะพะทะดะฐะฝะธั ะฟัะตะดััะฐะฒะปะตะฝะธั.
ะัะธัะพะตะดะธะฝะตะฝะธั ะธ ะฟัะพัะผะพััั ะฒ MySQL
A single-table view is the simplest case. Views become far more valuable when they wrap a multi-table query.
ะะฐะฒะฐะนัะต ัะตะฟะตัั ัะฐััะผะพััะธะผ ะดะพะฒะพะปัะฝะพ ัะปะพะถะฝัะน ะฟัะธะผะตั, ะบะพัะพััะน ะฒะบะปััะฐะตั ะฒ ัะตะฑั ะฝะตัะบะพะปัะบะพ ัะฐะฑะปะธั ะธ ะฒะฐัะธะฐะฝัะพะฒ ะธัะฟะพะปัะทะพะฒะฐะฝะธั. ะฟัะธัะพะตะดะธะฝัะตััั.
ะั ัะฟะฐะบัะตะผ ัะพะทะดะฐะฝะฝัะน JOIN, ะบะพัะพััะน ะฟะพะปััะฐะตั ะธะฝัะพัะผะฐัะธั ะธะท ััะตั (3) ัะฐะฑะปะธั, ะฐ ะธะผะตะฝะฝะพ ััะฐััะฝะธะบะพะฒ, ัะธะปัะผะพะฒ ะธ ะฟัะพะบะฐัะฐ ัะธะปัะผะพะฒ. ะะธะถะต ะฟัะธะฒะตะดะตะฝ ัะบัะธะฟั, ะบะพัะพััะน ะฟะพะผะพะถะตั ะฝะฐะผ ะดะพะฑะธัััั ััะพะณะพ.
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`;
ะัะฟะพะปะฝะตะฝะธะต ะฟัะธะฒะตะดะตะฝะฝัั ะฒััะต ััะตะฝะฐัะธะตะฒ ัะพะทะดะฐะตั ะฟัะตะดััะฐะฒะปะตะฝะธะต ั ะธะผะตะฝะตะผ General_v_movie_rentals ะฒ ะฝะฐัะตะน ะฑะฐะทะต ะดะฐะฝะฝัั myflixdb.
ะะฐะฒะฐะนัะต ัะตะฟะตัั ะฒัะฑะตัะตะผ ะฒัะต ะฟะพะปั ะธะท ัะฐะฑะปะธัั ั ะธะผะตะฝะตะผ General_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
ะัะฟะพะปะฝะตะฝะธะต ะฟัะธะฒะตะดะตะฝะฝะพะณะพ ะฒััะต ััะตะฝะฐัะธั ะฒ MySQL ะฒะตัััะฐะบ ะฟัะพัะธะฒ myflixdb ะดะฐะตั ะฝะฐะผ ัะปะตะดัััะธะต ัะตะทัะปััะฐัั, ะฟะพะบะฐะทะฐะฝะฝัะต ะฝะธะถะต.
| 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 |
ะะฑัะฐัะธัะต ะฒะฝะธะผะฐะฝะธะต, ััะพ ะฝะฐะผ ะฝะต ะฟัะธัะปะพัั ะฟะธัะฐัั ัะปะพะถะฝัะน ะทะฐะฟัะพั JOIN, ััะพะฑั ะฟะพะปััะธัั ะธะฝัะพัะผะฐัะธั ะพะฑ ััะฐััะฝะธะบะฐั , ัะธะปัะผะฐั ะธ ะดะตัะฐะปัั ะฟัะพะบะฐัะฐ ัะธะปัะผะพะฒ. ะั ะฟัะพััะพ ะธัะฟะพะปัะทะพะฒะฐะปะธ ะฟัะตะดััะฐะฒะปะตะฝะธะต ะฒ ะพะฑััะฝะพะผ ะพะฟะตัะฐัะพัะต SELECT, ะบะฐะบ ะธ ะปัะฑัั ะดััะณัั ะพะฑััะฝัั ัะฐะฑะปะธัั. ะัะตะดััะฐะฒะปะตะฝะธะต ะผะพะถะฝะพ ะฒัะทะฒะฐัั ะธะท ะปัะฑะพะน ัะพัะบะธ ัะธััะตะผั ะฟัะธะปะพะถะตะฝะธะน, ัะฐะฑะพัะฐััะตะน ะฟะพะฒะตัั myflixdb.
ะะฐะดะตะฝะธะตping ะัะพัะผะพััั ะฒ MySQL
ะะพะผะฐะฝะดะฐ DROP ะผะพะถะตั ะธัะฟะพะปัะทะพะฒะฐัััั ะดะปั ัะดะฐะปะตะฝะธั ะฟัะตะดััะฐะฒะปะตะฝะธั ะธะท ะฑะฐะทะฐ ะดะฐะฝะฝัั ััะพ ะฑะพะปััะต ะฝะต ััะตะฑัะตััั. ะัะฝะพะฒะฝะพะน ัะธะฝัะฐะบัะธั ัะดะฐะปะตะฝะธั ะฟัะตะดััะฐะฒะปะตะฝะธั ัะปะตะดัััะธะน.
DROP VIEW `general_v_movie_rentals`;
ะะฐะดะตะฝะธะตping a view removes only the stored query; the underlying tables and their data are untouched.

