关系可以有三种类型:
- 基本表,实际存储数据的逻辑表示
- 查询表,查询结果对应的表
- 视图表,是虚表,由基本表和其他视图应表导出,不对应实际的存储结构,数据库中只存放关于视图的定义,视图就像是一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
视图的作用:
- 简化用户操作
- 使用户从多种角度看待同一数据
- 对数据重构提供了一定的逻辑独立性
- 对机密数据提供安全保护
- 清晰的表达查询
创建视图:
create view view_name (colunm_name1,column_name2,...)
as
select colunm_name1...
from table_name
where 条件
//组成视图的属性列名或全部定义或全部省略,但当处于一下三种情况时要全部定义:
//1,某个目标列不是单纯的列表属性名,而是聚集函数或是列表达式
//2,多表连接时,选出多个同名的列作为视图的列属性
//3,需要在视图中为某个列用更合适的新名字
删除视图:
drop view view_name cascade;//联级删除视图
查询视图:
方法与查询基本表类似
具体内部过程为,先看视图是否存在,如果存在,则从数据字典中取出视图的定义,把定义中的子查询与用户的查询结合起来,换成等价的对基本表的查询,在修正执行查询基本表。
更新视图:
相当于更新了基本表。delete,insert,update
并不是所有的视图都可以更新,有下列情况的不能更新:
1,由两个以上基本表导出
2,视图字段来自字段表达式或常数,不能执行update和insert,但可以执行delete
3,视图字段来自聚集函数
4,视图定义中含有group by 或 distinct或嵌套查询,并且内层查询的from字句中涉及的表也是导出该视图的基本表