• oracle视图


    视图:(百度百科的定义)视图是一个虚拟表,视图并不在数据库中存储数据值,数据库中只在数据字典中存储对视图的定义。

    视图的优点:

    1.为用户集中数据,简化用户的数据查询和处理。
    2.屏蔽数据库的复杂性,用户不必了解数据库的复杂性。
    3.简化用户权限的管理,只授予用户使用视图的权限。
    4.便于数据共享,多个用户不必都定义所需的数据。
    5.可以重新组织数据,以便关联到其他应用中。

    库里已经有两张表westemp ,westdept b,现在我们想要创建一个视图temp_dept_view,来描述a,b表的内连接查询的结果

    oracle视图创建语句:

    1.复杂视图

    create or replace view temp_dept_view
    (wtdempid,wtdempname,wtddepte,wtddeptd,wtddeptname,wtddeptaddress)
    as
    select a.wtdempid,a.wtdempname,a.wtddeptid,b.wtddeptid,b.wtddeptname,b.wtddeptaddress from westemp a,westdept b where a.wtddeptid=b.wtddeptid

    2.简单视图

    create view westtemp
    as
    select a.*from westemp a

    插入一条数据:

    insert into westtemp values (15,'o',4)

    可以

    3.只读视图

    create or replace view westtemp1
    as
    select b.* from westdept b
    with read only

    插入一条数据,报错

    insert into westtemp1 values (5,'coder','seatle')

    删除视图:

    drop view  westtemp
    注:删除视图不影响基表中的数据;只有视图所有者和具备DROP VIEW权限的用户可以删除视图;
         视图被删除后,基于被删除视图的其他视图或应用将无效。
     
    复杂视图与简单视图:
      视图分为复杂视图和简单视图。它们的区分点:是否是单表,是否包含函数和数据组。
      简单视图只从单表里获取数据;复杂视图从多表里获取数据。
      简单视图不包含函数和数据组;复杂视图包含函数和数据组。
      简单视图可以实现DML操作;复杂视图不可以
    复杂视图:
    create or replace view westtemp2
    (address,sumempid,avgempid,maxempid,minempid)
    as
    select b.wtddeptaddress,sum(a.wtdempid),avg(a.wtdempid),max(a.wtdempid),min(a.wtdempid) from westemp a,westdept b where a.wtddeptid=b.wtddeptid group by b.wtddeptaddress

    插入一条数据,报错

    insert into westtemp2 values('losangles',23,5.3,14,6)

    视图的状态 

    当创建视图后,ORACLE将会验证视图的有效性,如修改了基本表,则会导致视图的无效状态.可查询数据字典user_objects的status.
      1)、创建表T,包含ID和NAME两列;
      2)、使用该表创建一个视图t_view,查看该表所有信息;
      3)、使用该表创建一个视图t_view2,查看该表的ID和NAME列
      4)、查看该视图状态;
      5)、在表T上增加一列性别sex,重新查看视图t_view的状态.
      6)、在表T上删除列NAME,重新查看视图t_view2的状态.
      注:VALID表示正常状态,invalid表示非正常状态

    使视图状态变为有效的方法 

    1)在ORACLE中对该视图进行一次查询,如果没有错误,则系统会自动对其进行重新编译,视图状态变为有效。
    2)手动重新编译视图
      语句格式:
      alter view view_name compile;
     

    后期需要补充

    附件:

    后期会补充建表语句。

    现有两张表,

    westemp员工表,有(wtdempid,wtdempname,wtddeptid)列,

    westdept部门表,有 (wtddeptid,wtddeptname,wtddeptaddress)列.

    其中westemp.wtddeptid可以等于 westdept.wtddeptid.

  • 相关阅读:
    微软软件下载
    FTP主动连接与被动连接
    Linux下grep显示前后几行信息
    cacti 安装过程中“ERROR: 您的MySQL TimeZone 数据库未被填充. 请在继续之前填入此数据库.”
    Cacti安装详细步骤
    Linux 踢掉其他终端用户
    迁移设备存储报的错误及解决方式
    sql_mode :(STRICT_TRANS_TABLES与STRICT_ALL_TABLES 区别)
    Nginx日志按日期切割详解(按天切割)
    git pull冲突:commit your changes or stash them before you can merge.
  • 原文地址:https://www.cnblogs.com/westward/p/5177689.html
Copyright © 2020-2023  润新知