视图

视图

  • 视图是一种数据库对象,是从一张或者多张表或者视图中导出的虚表,它所对应的数据并没有真正存在视图,而是存在所引用的表
  • 优点:安全,简化数据操作,着重于特定数据

授权视图权限

GRANT CREATE VIEW TO SCOTT;

创建简单视图

CREATE OR REPLACE VIEW V_EMP
AS
SELECT EMPNO 工号,ENAME 姓名,JOB 岗位,SAL 薪资 FROM EMP;

查询视图

SELECT * FROM V_EMP;

指定视图的别名

  • 注意:别名个数必须匹配SELECT中的字段个数
CREATE OR REPLACE VIEW V_EMP_ALIAS(工号,姓名)
AS
SELECT EMPNO,ENAME FROM EMP;

SELECT * FROM V_EMP_ALIAS WHERE 工号=7369;

查看视图可修改的列

SELECT TABLE_NAME,COLUMN_NAME,UPDATABLE,INSERTABLE,DELETABLE 
FROM USER_UPDATABLE_COLUMNS WHERE TABLE_NAME='V_EMP_ALIAS';

SELECT * FROM EMP;

视图新增

  • 可以增删改
INSERT INTO V_EMP_ALIAS VALUES(3409,'NAME');

创建只读视图

  • WITH READ ONLY
CREATE OR REPLACE VIEW V_EMP_READONLY
AS
SELECT EMPNO,ENAME,SAL FROM EMP
WITH READ ONLY;

创建约束视图

  • WITH CHECK OPTION
  • 约束视图里面的约束就是WHERE后面的条件
CREATE OR REPLACE VIEW V_EMP_CHECK
AS
SELECT EMPNO,ENAME,SAL,DEPTNO FROM EMP WHERE DEPTNO=10
WITH CHECK OPTION CONSTRAINT V_EMP_CK;

创建复杂视图

  • 一般不能进行DML操作
CREATE OR REPLACE VIEW V_EMPDEPT_SUM
AS
SELECT D.DNAME 部门名,COUNT(1) 人数,
MAX(SAL) 最高工资,MIN(SAL) 最低工资,SUM(SAL) 总工资 FROM EMP E,DEPT D
WHERE E.DEPTNO=D.DEPTNO GROUP BY D.DNAME;

删除视图

DROP VIEW 视图名;

你可能感兴趣的:(视图)