建视图

建视图

CREATE FORCE VIEW jn_posttable AS  (select name , code  , pk_org  from  org_orgs)

—只读
CREATE OR REPLACE VIEW cr_org_view
               (name,pk_org,code,ts)
       AS SELECT name,pk_org,code,ts
       FROM    org_orgs
       WHERE dr=0 with read only;    




视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。
视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。
 
视图的优点:
1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
2.用户通过简单的查询可以从复杂查询中得到结果。
3.维护数据的独立性,试图可从多个表检索数据。
4.对于相同的数据可产生不同的视图。
视图分为简单视图和复杂视图:
1、简单视图只从单表里获取数据,复杂视图从多表;
2、简单视图不包含函数和数据组,复杂视图包含;
3、简单视图可以实现DML操作,复杂视图不可以。
 
 
语法结构:创建视图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
    [(alias[, alias]...)]

AS subquery
     [WITH CHECK OPTION [CONSTRAINT constraint]]
     [WITH READ ONLY]
 
语法解析:
OR REPLACE    :若所创建的试图已经存在,则替换旧视图;
FORCE:不管基表是否存在ORACLE都会自动创建该视图(即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用);
NOFORCE  :如果基表不存在,无法创建视图,该项是默认选项(只有基表都存在ORACLE才会创建该视图)。
alias:为视图产生的列定义的别名;
subquery  :一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK OPTION  :插入或修改的数据行必须满足视图定义的约束;
WITH READ ONLY       :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。
 
案例3:基于EMP表和DEPT表创建视图
代码演示:视图
SQL> CREATE OR REPLACE VIEW EMPDETAIL
  2  AS
  3  SELECT EMPNO,ENAME,JOB,HIREDATE,EMP.DEPTNO,DNAME
  4  FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO
  5  WITH READ ONLY
  6  /





posted @ 2022-02-24 21:56  Chesters  阅读(68)  评论(0编辑  收藏  举报