MySQL - ALTER VIEW Statement

A MySQL view is a composition of a table in the form of a predefined SQL query. It is stored in the database with an associated name.
You can change the definition of an existing view using the ALTER VIEW Statement
Following is the syntax of the ALTER VIEW Statement −
ALTER
   [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
   VIEW view_name [(column_list)]
   AS select_statement
   [WITH [CASCADED | LOCAL] CHECK OPTION]

Suppose we have created a table named dispatches_data with 5 records in it using the following queries −
mysql> CREATE TABLE dispatches_data(
   ProductName VARCHAR(255),
   CustomerName VARCHAR(255),
   DispatchTimeStamp timestamp,
   Price INT,
   Location VARCHAR(255)
);
insert into dispatches_data values('Key-Board', 'Raja', TIMESTAMP('2019-05-04', '15:02:45'), 7000, 'Hyderabad');
insert into dispatches_data values('Earphones', 'Roja', TIMESTAMP('2019-06-26', '14:13:12'), 2000, 'Vishakhapatnam');
insert into dispatches_data values('Mouse', 'Puja', TIMESTAMP('2019-12-07', '07:50:37'), 3000, 'Vijayawada');
insert into dispatches_data values('Mobile', 'Vanaja' , TIMESTAMP ('2018-03-21', '16:00:45'), 9000, 'Chennai');
insert into dispatches_data values('Headset', 'Jalaja' , TIMESTAMP('2018-12-30', '10:49:27'), 6000, 'Goa');
Let us create a view using the CREATE VIEW statement as shown below −
mysql> CREATE VIEW testView AS SELECT * FROM dispatches_data;

You can retrieve the definition of the above created view using the SHOW CREATE VIEW statement as shown below −
mysql> SHOW CREATE VIEW testView;
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View     | Create View                                                                                                                                                                                                                                                                                                                                                                  | character_set_client | collation_connection |
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| testview | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `testview` AS select `dispatches_data`.`ProductName` AS `ProductName`,`dispatches_data`.`CustomerName` AS `CustomerName`,`dispatches_data`.`DispatchTimeStamp` AS `DispatchTimeStamp`,`dispatches_data`.`Price` AS `Price`,`dispatches_data`.`Location` AS `Location` from `dispatches_data` | cp850                | cp850_general_ci     |
+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.07 sec)
Following query alters the ALGORITHM of the table −
mysql> ALTER ALGORITHM=MERGE VIEW testView AS SELECT * FROM dispatches_data;
Query OK, 0 rows affected (0.73 sec)

If you retrieve the definition of the above created view after altering the table you can observe the name of the algorithm −
mysql> SHOW CREATE VIEW testView;
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View     | Create View                                                                                                                                                                                                                                                                                                                                                              | character_set_client | collation_connection |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| testview | CREATE ALGORITHM=MERGE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `testview` AS select `dispatches_data`.`ProductName` AS `ProductName`,`dispatches_data`.`CustomerName` AS `CustomerName`,`dispatches_data`.`DispatchTimeStamp` AS `DispatchTimeStamp`,`dispatches_data`.`Price` AS `Price`,`dispatches_data`.`Location` AS `Location` from `dispatches_data` | cp850                | cp850_general_ci     |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.10 sec)
If a view is created such that it includes all (or certain) columns of a table you can change the columns used in the view using the ALTER VIEW statement.
ALTER
   VIEW view_name column_list
   AS select_statement

If you retrieve the contents of the above created view using SELECT statement as shown below −
mysql> SELECT * FROM testView;
+-------------+--------------+---------------------+-------+----------------+
| ProductName | CustomerName | DispatchTimeStamp   | Price | Location       |
+-------------+--------------+---------------------+-------+----------------+
| Key-Board   | Raja         | 2019-05-04 15:02:45 | 7000  | Hyderabad      |
| Earphones   | Roja         | 2019-06-26 14:13:12 | 2000  | Vishakhapatnam |
| Mouse       | Puja         | 2019-12-07 07:50:37 | 3000  | Vijayawada     |
| Mobile      | Vanaja       | 2018-03-21 16:00:45 | 9000  | Chennai        |
| Headset     | Jalaja       | 2018-12-30 10:49:27 | 6000  | Goa            |
+-------------+--------------+---------------------+-------+----------------+
5 rows in set (0.02 sec)5 rows in set (0.15 sec)
Following query alters the columns of an existing views −
mysql> ALTER VIEW testView (ProductName, Price, Location) AS SELECT ProductName, Price, Location FROM dispatches_data;
Query OK, 0 rows affected (0.34 sec)

You can verify the contents of altered view as shown below −
mysql> SELECT * FROM testView;
+-------------+-------+----------------+
| ProductName | Price | Location       |
+-------------+-------+----------------+
| Key-Board   | 7000  | Hyderabad      |
| Earphones   | 2000  | Vishakhapatnam |
| Mouse       | 3000  | Vijayawada     |
| Mobile      | 9000  | Chennai        |
| Headset     | 6000  | Goa            |
+-------------+-------+----------------+
5 rows in set (0.15 sec)

    31 Lectures 
     6 hours 

 Eduonix Learning Solutions

    84 Lectures 
     5.5 hours 

 Frahaan Hussain

    6 Lectures 
     3.5 hours 

 DATAhill Solutions Srinivas Reddy

    60 Lectures 
     10 hours 

 Vijay Kumar Parvatha Reddy

    10 Lectures 
     1 hours 

 Harshit Srivastava

    25 Lectures 
     4 hours 

 Trevoir Williams
 Print
 Add Notes
 Bookmark this page