视图
定义:视图是将sql查询的结果动态保存到数据中,是一个虚拟表
视图是基于一张表或者多张表创建的或者可以基于视图创建
基于的表叫基表
为什么是虚拟表呢?
因为视图本身不包含数据,数据来源于基表
为什么要用视图?
它可以创建只读视图
创建视图
语法
CREATE
[OR REPLACE] --或者替换
VIEW 视图名
AS SQL 语句
[WITH READ ONLY] --只读视图
基于一张表创建一个视图
因为没权限,我使用system用户
例题:
创建一个视图要求包含20好部门的员工姓名岗位工资还有员工编号
CREATE OR REPLACE
VIEW view_emp
AS SELECT ename,job,sal,empno FROM scott.emp WHERE deptno = 20;
基于一张表创建的视图,可以对视图增删改来达到对基表的增删改。
基于多张表创建视图
例题
创建一个视图要求包含部门名称 部门地址 小写的姓名 薪资 奖金 薪资加奖金
CREATE OR REPLACE
VIEW view_emp2
AS SELECT b.dname,b.loc,LOWER(a.ename) xingming,a.sal,a.comm,(a.sal+nvl(a.comm,0)) allsum FROM scott.emp a LEFT JOIN scott.dept b ON a.deptno = b.deptno;
基于多张表创建的视图,不能增删改非原表字段的列 (虚拟列)(取别名的列)
基于视图创建视图
例题:基于刚才的视图,创建一个视图,要求展示部门名称以及对应的部门平均工资基于一张表创建的视图,
CREATE OR REPLACE
VIEW view_emp3
AS SELECT dname,AVG(sal) avgsal FROM view_emp2 GROUP BY dname;
基于视图创建的新视图,原视图的基表发生变化,新视图也会发生变化
删除视图
DROP VIEW 视图名;
修改视图
利用 OR REPLACE 把原先的替换掉就ok了