MySQL Views
MySQL CREATE VIEW Statement
An SQL view is a virtual table based on the result-set of an SQL statement. An SQL view contains rows and columns, just like a real table. The fields in the view are fields from one or more real tables in the database.
You can add SQL statements and functions to a view and present the data as if it were coming from one single table.
A view is created with the CREATE VIEW statement.
CREATE VIEW Syntax
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;Note: A view always shows real-time data! The database engine only stores the view's definition (the SELECT statement), not a copy of the data.
CREATE VIEW Examples
The following SQL creates a view named "brazil_customers_view", that shows all customers from Brazil:
Example
CREATE VIEW brazil_customers_view AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = 'Brazil';
To query the view above, use the following SQL syntax:
Example
SELECT * FROM brazil_customers_view;
The following SQL creates a view named "products_above_average_price", that selects all products in the "Products" table with a Price higher than the average price:
Example
CREATE VIEW products_above_average_price AS
SELECT ProductName, Price
FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products);
To query the view above, use the following SQL syntax:
Example
SELECT * FROM products_above_average_price;
CREATE OR REPLACE VIEW Statement
In MySQL, a view can be updated with the CREATE OR REPLACE
VIEW statement.
CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;The following SQL adds the "City" column to the "brazil_customers_view" view:
Example
CREATE OR REPLACE VIEW brazil_customers_view AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = 'Brazil';
DROP VIEW Statement
A view is deleted with the DROP VIEW statement.
DROP VIEW Syntax
DROP VIEW view_name;The following SQL drops the "brazil_customers_view" view:
Example
DROP VIEW brazil_customers_view;