Oracle创建、修改视图

快来打我* 2023-02-10 15:25 137阅读 0赞

视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。

视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。

视图的优点:

1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
2.用户通过简单的查询可以从复杂查询中得到结果。
3.维护数据的独立性,试图可从多个表检索数据。
4.对于相同的数据可产生不同的视图。

注意:
1、简单视图只从单表里获取数据,复杂视图从多表;
2、简单视图不包含函数和数据组,复杂视图包含;
3、简单视图可以实现DML操作,复杂视图不可以。

实例:基于EMP表和DEPT表创建视图

  1. CREATE OR REPLACE VIEW EMPDETAIL
  2. AS SELECT EMPNO,ENAME,JOB,HIREDATE,EMP.DEPTNO,DNAME
  3. FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO

如果需要删除视图,删除视图不会影响基表的数据(只有视图所有者和具备DROP VIEW权限的用户可以删除视图)。

  1. DROP VIEW EMPDETAIL

视图创建成功后,可以从视图中检索数据,这点和从表中检索数据一样。

  1. SELECT * FROM EMPDETAIL

修改视图

查询日期知识点:

  1. UPDATE EMPDETAIL
  2. SET DEPTNO=20
  3. WHERE EMPNO=7902;

查询之前需要格式化日期,用to_char(日期,格式)函数进行转换

  1. SELECT D.ORDER_NUM ,
  2. D.EMP_NAME
  3. FROM DAT_DOCUMENT d
  4. WHERE D.FORM_NAME ='Form_SD01'
  5. AND TO_CHAR(D.CREATE_TIME,'yyyy-MM-dd') BETWEEN '2019-01-01' AND '2020-03-17';

查询两个日期直接间隔天数:

  1. SELECT TO_char(d.CREATE_TIME,'yyyy-MM-dd'),
  2. TO_char(d.UPDATE_TIME,'yyyy-MM-dd'),
  3. trunc(d.UPDATE_TIME) - trunc(d.CREATE_TIME) as days
  4. FROM dat_document d

结果如下:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,137人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Oracle创建修改视图

    视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和

    相关 Oracle创建视图

    > 视图的优点: 1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 2.用户通过简单的查询可以从复杂查询中得到结果。 3.维护数据的独立性,试图可从多个表