MySQL database - MySQL modify view (ALTER VIEW)

Modifying a view refers to modifying the view existing in the MySQL database. When some fields of the basic table change, the view can be modified to maintain consistency with the basic table.

basic grammar

Existing views can be modified using the ALTER VIEW statement.

The syntax format is as follows:

ALTER VIEW <视图名> AS <SELECT语句>

The syntax is explained as follows:

  • <视图名>: Specifies the name of the view. The name must be unique within the database and cannot have the same name as another table or view.
  • <SELECT 语句>: Specifies the SELECT statement to create a view, which can be used to query multiple underlying tables or source views.

It should be noted that the use of the ALTER VIEW statement requires the user to have CREATE VIEW and DROP permissions for the view, as well as certain permissions on each column selected by the SELECT statement.

To modify the definition of a view, in addition to ALTER VIEW, you can also use the DROP VIEW statement to delete the view first, and then use the CREATE VIEW statement to achieve.

modify view content

A view is a virtual table, and the actual data comes from the basic table, so updating the data in the view through insert, modify, and delete operations is essentially updating the data in the basic table referenced by the view.

Note: The modification of the view is the modification of the basic table, so when modifying, the data definition of the basic table must be satisfied.

Certain views are updatable. That is, statements such as UPDATE, DELETE, or INSERT can be used to update the contents of the base table. For a view to be updatable, there must be a one-to-one relationship between the rows in the view and the rows of the base table.

There are also certain other constructs that make views non-updatable. More specifically, a view is not updatable if it contains any of the following structures:

  • Aggregate functions SUM(), MIN(), MAX(), COUNT(), etc.
  • DISTINCT keyword.
  • GROUP BY child clause.
  • HAVING clause.
  • UNION or UNION ALL operator.
  • A subquery placed in a select list.
  • A nonupdatable view in the FROM clause may contain multiple tables.
  • A subquery in the WHERE clause that references a table in the FROM clause.
  • When the ALGORITHM option is TEMPTABLE (using a temporary table always makes the view non-updatable).

[Example 1] Use the ALTER statement to modify the view view_students_info, the entered SQL statement and the execution result are as follows:

mysql> ALTER VIEW view_students_info
    -> AS SELECT id,name,age
    -> FROM tb_students_info;
Query OK, 0 rows affected (0.07 sec)
mysql> DESC view_students_info;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | 0       |       |
| name  | varchar(45) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.03 sec)

Users can insert, update, and delete data in the table through the view, because the view is a virtual table without data. When updating through the view, go to the basic table to update. If you add or delete records to the view, you are actually adding or deleting records to the basic table.

View the data content of the view view_students_info, as follows:

mysql> SELECT * FROM view_students_info;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | Dany   |   24 |
|  2 | Green  |   23 |
|  3 | Henry  |   23 |
|  4 | Jane   |   22 |
|  5 | Jim    |   24 |
|  6 | John   |   21 |
|  7 | Lily   |   22 |
|  8 | Susan  |   23 |
|  9 | Thomas |   22 |
| 10 | Tom    |   23 |
+----+--------+------+
10 rows in set (0.00 sec)

[Example 2] Use the UPDATE statement to update the view view_students_info, the entered SQL statement and execution results are as follows:

mysql> UPDATE view_students_info
    -> SET age=25 WHERE id=1;
Query OK, 0 rows affected (0.24 sec)
Rows matched: 1  Changed: 0  Warnings: 0
mysql> SELECT * FROM view_students_info;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | Dany   |   25 |
|  2 | Green  |   23 |
|  3 | Henry  |   23 |
|  4 | Jane   |   22 |
|  5 | Jim    |   24 |
|  6 | John   |   21 |
|  7 | Lily   |   22 |
|  8 | Susan  |   23 |
|  9 | Thomas |   22 |
| 10 | Tom    |   23 |
+----+--------+------+
10 rows in set (0.00 sec)

View the contents of the base table tb_students_info and view v_students_info as follows:

mysql> SELECT * FROM tb_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.00 sec)

mysql> SELECT * FROM v_students_info;
+------+--------+------+-------+-------+----------+------------+
| s_id | s_name | d_id | s_age | s_sex | s_height | s_date     |
+------+--------+------+-------+-------+----------+------------+
|    1 | Dany   |    1 |    25 | F     |      160 | 2015-09-10 |
|    2 | Green  |    3 |    23 | F     |      158 | 2016-10-22 |
|    3 | Henry  |    2 |    23 | M     |      185 | 2015-05-31 |
|    4 | Jane   |    1 |    22 | F     |      162 | 2016-12-20 |
|    5 | Jim    |    1 |    24 | M     |      175 | 2016-01-15 |
|    6 | John   |    2 |    21 | M     |      172 | 2015-11-11 |
|    7 | Lily   |    6 |    22 | F     |      165 | 2016-02-26 |
|    8 | Susan  |    4 |    23 | F     |      170 | 2015-10-01 |
|    9 | Thomas |    3 |    22 | M     |      178 | 2016-06-07 |
|   10 | Tom    |    4 |    23 | M     |      165 | 2016-08-05 |
+------+--------+------+-------+-------+----------+------------+
10 rows in set (0.00 sec)

modify view name

To modify the name of a view, you can first delete the view, and then follow the same definition statement to create the view and name it as a new view name.

Dark horse programmer MySQL database entry to proficiency, from mysql installation to mysql advanced, mysql optimization all covered

Guess you like

Origin blog.csdn.net/Itmastergo/article/details/130470174