-------------------------------------------------视图------------------------------------------------
定义:
视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。视图创建后,可以用与表基本相同的方式利用,执行select操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新数据。常用于简化字段。视图提供了一种MySQL的select语句层次的封装,可用来简化数据处理以及重新格式化基础数据或者保护基础数据。
特性:
- 视图可以嵌套
- 视图可使用order by,但如果从该视图检索数据select中含有order by,那么该视图中的order by将被覆盖
- 视图不能索引,也不能有关联的触发器或默认值
- 视图可和表一起使用。例如,编写一条联结表和视图的select语句
语法:
视图在SQL语言中主要划分为三种:标准视图、内联视图、物化视图。内联视图是一种临时视图,不存储到数据字典中。而标准视图在使用过程中需要在进行SELECT查询语句前进行视图的创建。以下语法都是针对标准视图。
- 创建标准视图:create view 视图名 as
- 查看创建视图的语句:show create view 视图名
- 删除视图:drop view 视图名
- 更新视图时,可以先用drop再用create,也可以直接用create or replace view 。如果更新的视图不存在,create or replace view 会创建一个视图;如果更新的视图存在,create or replace view 会替换原有的视图。
注意:
如果视图定义中有以下操作,则不能进行视图的更新
- 分组(使用group by和having)
- 联结
- 子查询
- 并
- 聚集函数(min()、count()、sum()等)
- distinct
- 导出(计算)列