MySQL视图

视图是从一个表或多个表导出来的表,是一种虚拟表,不占内存空间,视图中保存的仅仅是一条select语句,其数据源来自数据库表或其他视图。当基本表发生变化时,视图的数据也会随之变化。视图是存储在数据库中的查询SQL语句。

使用视图的目的:1、安全原因,视图可以隐藏一些数据。2、操作方便,视图相当于对查询SQL语句的封装,在表结构有一些改变时不需要重新编写查询SQL。3、提高表的逻辑独立性,视图可以屏蔽原来表结构变化带来的影响。

视图的工作机制:调用视图时,才会执行视图中的SQL语句。视图的内容没有存储,这样不会占用空间。又由于是即时即用,所以内容总是与真实表的内容一致。

视图的定义和管理

创建视图:

create view 视图名 [(视图列表)] as 查询语句

视图定义后,就可以如同查询基本表那样对视图进行查询

视图注意事项:

1、使用视图查询时,如基本表中添加了新字段,则该视图中不包括新字段。如果关联的基本表或视图被删除,则该视图将不能使用。

删除视图:

drop view if exists 视图名

查看视图 :

1、desc 视图名

2、show table status like '视图名'

3、show create view '视图名'

4、查询某个数据库下的视图:select * from 数据库名.views where table_name = '视图名'

修改视图:

1、

2、

更新视图数据:update ....set

 更新视图原则:
1、视图中包含聚合函数,无法更新

2、包含union, union all, distinct , group by , having等关键字的,无法更新

3、常量视图无法更新,如create view view1 as select now();

4、包含子查询

5、由不可更新的视图导出的视图,无法更新

6、创建视图时algotithm为temptable类型

7、视图关联的基本表存在没有默认值的列,而且该列没有包含在视图中

8、·······

原文地址:https://www.cnblogs.com/cn-chy-com/p/10710121.html