Oracle中如何创建和使用视图(View)

大超

在创建和使用视图(View)之前,首先要搞明白视图的概念。视图是基于一个表、多个表或视图的逻辑表,视图本身是不包含数据的,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表,在Oracle的数据库中,对象分为五种:表、视图、序列、索引和同义词。 视图是其实就是一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合,方便数据展示。

如何创建Oracle视图

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
    [(alias[, alias]...)]
AS subquery
     [WITH CHECK OPTION [CONSTRAINT constraint]]
     [WITH READ ONLY]

让我们分析一下上面的语法:

  1. OR REPLACE:若所创建的试图已经存在,则替换旧视图。

  2. FORCE:不管基表是否存在,ORACLE都会自动创建该视图(即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用)。

  3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项(只有基表都存在ORACLE才会创建该视图)。

  4. alias:为视图产生的列定义的别名。

  5. subquery:一条完整的SELECT语句,可以在该语句中定义别名。

  6. WITH CHECK OPTION:插入或修改的数据行必须满足视图定义的约束。

  7. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

举个例子:

 CREATE OR REPLACE VIEW NCPDETAIL
  AS
  SELECT NCNO,ENAME,JOB,HIREDATE,NC.DEPTNO,DNAME
  FROM NC JOIN DEPT ON NC.DEPTNO=DEPT.DEPTNO
  WITH READ ONLY

删除Oracle视图

删除视图比较简单,可以使用“DROP VIEW 视图名称”,删除视图不会影响基表的数据。只有视图所有者和具备DROP VIEW权限的用户可以删除视图。

修改Oracle视图

通过OR REPLACE 重新创建同名视图即可,参照上面创建视图的语法。

有问题可在下方评论留言,或关注“大超小志”微信公众号留言。

标签: Oracle 视图

留言评论

如需留言或评论,请在微信中打开此页面。