您好,欢迎访问一九零五行业门户网

mysql视图怎么修改表中信息

在mysql中,视图是一个虚拟表,实际的数据来自于基本表,所以通过插入、修改和删除操作更新视图中的数据信息,实质上就是在更新视图所引用的基本表的数据信息;语法格式“alter view 2ab03bb730cda1137bdaf46184c617f7 as f4652a27afbcb8107d77c83a913848e7”。语句>
(推荐教程:mysql视频教程)
修改视图内容
视图是一个虚拟表,实际的数据来自于基本表,所以通过插入、修改和删除操作更新视图中的数据,实质上是在更新视图所引用的基本表的数据。
注意:对视图的修改就是对基本表的修改,因此在修改时,要满足基本表的数据定义。
基本语法
可以使用 alter view 语句来对已有的视图进行修改。
语法格式如下:
alter view <视图名> as <select语句>
语法说明如下:
<视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
<select 语句>:指定创建视图的 select 语句,可用于查询多个基础表或源视图。
需要注意的是,对于 alter view 语句的使用,需要用户具有针对视图的 create view 和 drop 权限,以及由 select 语句选择的每一列上的某些权限。
修改视图的定义,除了可以通过 alter view 外,也可以使用 drop view 语句先删除视图,再使用 create view 语句来实现。
某些视图是可更新的。也就是说,可以使用 update、delete 或 insert 等语句更新基本表的内容。对于可更新的视图,视图中的行和基本表的行之间必须具有一对一的关系。
还有一些特定的其他结构,这些结构会使得视图不可更新。更具体地讲,如果视图包含以下结构中的任何一种,它就是不可更新的:
聚合函数 sum()、min()、max()、count() 等。
distinct 关键字。
group by 子句。
having 子句。
union 或 union all 运算符。
位于选择列表中的子查询。
from 子句中的不可更新视图或包含多个表。
where 子句中的子查询,引用 from 子句中的表。
algorithm 选项为 temptable(使用临时表总会使视图成为不可更新的)的时候。
【实例 1】使用 alter 语句修改视图 view_students_info,输入的 sql 语句和执行结果如下所示。
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)
用户可以通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟的表,没有数据。通过视图更新时转到基本表上进行更新,如果对视图增加或删除记录,实际上是对基本表增加或删除记录。
查看视图 view_students_info 的数据内容,如下所示。
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)
【实例 2】使用 update 语句更新视图 view_students_info,输入的 sql 语句和执行结果如下所示。
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: 0mysql> 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)
查看基本表 tb_students_info 和视图 v_students_info 的内容,如下所示。
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)
以上就是mysql视图怎么修改表中信息的详细内容。
其它类似信息

推荐信息