视图
一、定义
也称虚表,视图是表中数据的逻辑表示。视图本身并不存储任何数据,而真正的数据是存在于基表中的。视图也和表一样,也带有名称的列和行。简单的说,视图就是一个展示的窗口,它可以从这个表拿点数据,从另一个表拿点数据,进行展示。
二、为什么要使用视图
- 提供各种数据表现形式,
可以使用各种不同的方式将基表的数据展现在用户面前, 以便符合用户的使用习惯(使用别名). - 隐藏数据的逻辑复杂性并简化查询语句
多表查询语句一般是比较复杂的, 而且用户需要了解表之间的关系, 否则容易写错;
如果基于这样的查询语句创建一个视图, 用户就可以直接对这个视图进行"简单查询"而获得结果.
这样就隐藏了数据的复杂性并简化了查询语句 - 提供一定安全性保证.
视图提供了一种可以控制的方式, 即可以让不同的用户看见不同的列, 而不允许访问那些敏感的列,
这样就可以保证敏感数据不被用户看见. - 简化用户权限的管理.
可以将视图的权限授予用户, 而不必将基表中某些列的权限授予用户, 这样就简化了用户权限的定义
笔记说明:
- 将复杂的查询封装为视图,降低程序员的开发难度
- 提供一定安全性保障(防止表被删除)
三、分类
1、简单视图
- 简单视图只从单表里获取数据
- 简单视图不包含函数和数据组
- 简单视图可以实现DML操作
2、复杂视图
- 复杂视图从多表中获取数据
- 复杂视图包含是函数和数据组
- 复杂视图不可以DML的增删改操作
四、创建视图
- 语法格式
CREATE [OR REPLACE] VIEW 视图名称 AS 子查询 [WITH [CASCADED | LOCAL] CHECK OPTION] -- sql标准 -- [WITH CHECK OPTIONI] --说明 -- [WITH READ ONLY] ; --限制视图为只读 -- or replace 会覆盖存在该视图名的视图
- 示例代码
CREATE OR REPLACE VIEW VO_DEPT_EMP AS (SELECT e.ename , e.DEPTNO, e.job, e.sal, e.mgr, d.DNAME, d.loc FROM emp e,DEPT d WHERE e.DEPTNO = d.DEPTNO)