Oracle数据库五

- 视图
- 数据库对象之一,在SQl语句中体现的角色与表相同的
- 但视图并不是一张真实存在的表,它
只是对应了一条--SELECT语句查询的结果集。使用视图可以重用子查询
- 并且简化Sql语句的复杂度
- 创建包含3部门员工信息的视图

CREATE VIEW  v_EMP_3  
AS 
SELECT DEPTNO,NAME,SALARY,JOB
FROM EMP
WHERE DEPTNO =3


--------- --------------------------
- 查看视图信息
 

SELECT * FROM V_EMP_3 


- 视图的使用可以参考表的使用
 

DESC v_EMP_3; 


- 视图对应的子查询字段可以使用别名
- 那么该视图对用的字段名就是这个别名
- 若字段含有函数或表达式,必须指定别名
--REPLACE创建修改
 

CREATE OR  REPLACE  VIEW v_EMP_3
AS SELECT DEPTNO DNO,NAME ENAME,SALARY SAL,JOB 
FROM EMP
WHERE DEPTNO=3;
SELECT *FROM v_EMP_3;


-对视图进行DML操作
-对视图进行DML操作就是对视图数据来源的基础表
-进行DML操作
-只能对简单视图进行DML操作,复杂视图不允许使用DML操作
-对简单视图进行DML操作,也不能违反基本表的约束条件
 

INSERT INTO v_EMP_3
(DNO,ENAME,SAL,JOB)
VALUES 
(3,'tangtang',6666,'editor')
SELECT *FROM v_EMP_3;
SELECT *FROM EMP;


- 当通过视图插入一条数据时,很可能会产生对基本表的污染
- 修改也会造成污染,但是删除不会造成
 

DELETE FROM V_EMP_3 WHERE ENAME ='tangtang' 


- 复杂视图
- 查询含有函数,表达式,分组,去重,多表关联查询
- 复杂视图不能进行DML
- 创建一个各个部门工资,情况的视图
- 视图包含的字段:部门编号,名字,该部门的最小工资
-最高工资,平均工资,工资的总和
 

SELECT MIN(SAL)FROM v_EMP_3 


-------------------------
- 最高工资
 

SELECT MAX(SAL) FROM V_EMP_3 


---平均工资
 

SELECT avg(SAL)FROM V_EMP_3


- 创建一个各个部门工资,情况的视图
 

CREATE   VIEW v_DEPT_SAL
AS
SELECT E.DEPTNO,D.DNAME,MIN(E.SALARY)  MIN_SAL,
MAX (E.SALARY) MAX_SAL,AVG(E.SALARY) AVG_SAL,
SUM(E.SALARY) SUM_SAL
FROM EMP E,DEPT D
WHERE E.DEPTNO=D.ID
GROUP BY  E.DEPTNO,D.DNAME


---------------------- -
 

扫描二维码关注公众号,回复: 4503812 查看本文章
SELECT * FROM V_DEPT_SAL 


-----------------------------
 

UPDATE V_DEPT_SAL SET DNAME= '宣创部'
WHERE DEPTNO=3


-查看谁比自己所在的部门平均工资高
 

SELECT  E.NAME,E.SALARY,E.DEPTNO,V.AVG_SAL
FROM  EMP E,V_DEPT_SAL V
WHERE E.DEPTNO=V.DEPTNO
AND E.SALARY >V.AVG_SAL


-删除视图
 

 DROP  VIEW v_DEPT_SAL


- 简单视图删除视图的数据,会对应将其基本表的数据删除,
- 删除视图本身并不会对其基本表数据产生任何影响
    

猜你喜欢

转载自blog.csdn.net/abcdefghwelcome/article/details/83688743