视图是从一个表或多个表导出来的表,是一种虚拟表,不占内存空间,视图中保存的仅仅是一条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、·······