当前位置:Gxlcms > 数据库问题 > MySQL之视图(VIEW)

MySQL之视图(VIEW)

时间:2021-07-01 10:21:17 帮助过:12人阅读

基本语法

可以使用 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 语句和执行结果如下所示。
修改前view_students_info的内容查询如下: 技术图片

 ALTER VIEW修改后查询结果如下:

技术图片

 

 【实例 2】使用 UPDATE 语句更新视图 view_students_info,输入的 SQL 语句和执行结果如下所示。

技术图片

 查询基表tb_students_ifno,发现基表的数据也被修改为了30

技术图片

修改视图名称

修改视图的名称可以先将视图删除,然后按照相同的定义语句进行视图的创建,并命名为新的视图名称。

五、MySQL删除视图(DORP VIEW)

删除视图是指删除 MySQL数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据。

基本语法

可以使用 DROP VIEW 语句来删除视图。

语法格式如下:

DROP VIEW <视图名1> [ , <视图名2> …]

其中:<视图名>指定要删除的视图名。DROP VIEW 语句可以一次删除多个视图,但是必须在每个视图上拥有 DROP 权限。

删除视图

【实例】删除 v_students,v2_students,vv_students_info 视图,输入的 SQL 语句和执行过程如下所示。

技术图片

 技术图片

 

 可以看到,v_students,v2_students,vv_students_info  视图已不存在,将其成功删除。

MySQL之视图(VIEW)

标签:数据操作   忽略   sql   algo   测试   div   l数据库   com   插入   

人气教程排行