精华内容
下载资源
问答
  • 视图的操作
    千次阅读
    2021-11-17 22:43:20

    一、学习任务1:为什么使用视图

            通过前面章节的知识可以发现,数据库中关于数据的查询有时候非常复杂,例如表连接、子查询等,这种査询会让程序员感到非常痛苦,因为它逻辑太复杂、编写语句比较多。当这种査询需要重复使用时,则不会次次都能编写正确,从而降低了数据库的实用性。

            在具体操作表前,有时候要求只能操作部分字段,而不是全部字段。例如,在公司中员工的工资一般是保密的,如果因为程序员一时疏忽向查询中多写入了关于“工资的字段,则会让员工的 工资显示给所有能够查看该查询结果的人,这时就需要限制程序员操作的字段。

            为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值形式存在。行和列数据来自定义视图的查询所引用基本表, 并且在具体引用视图时动态生成。

            视图使程序员只关心感兴趣的某些特定数据和他们所负责的特定任务。这样程序员只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。

    视图的特点如下:

    视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。

    视图是由基本表(实表)产生的表(虚表)。

    视图的建立和删除不影响基本表。

    对视图内容的更新(添加、删除和修改)直接影响基本表。

    当视图来自多个基本表时,不允许添加和删除数据。

    注意:MySQL数据库管理系统从5.0.1版本开始提供视图新特性。

    二、学习任务2:创建视图

            视图的操作包括创建视图、查看视图、删除视图和修改视图。本节将详细介绍如何创建视图。在创建视图时,首先要确保拥有CREATE VIEW的权限,并且同时确保对创建视图所引用的表也具有相应的权限。

    创建视图的语法形式

    虽然视图可以被看成是一种虚拟表,但是其在物理上是不存在的,即数据库管理系统没有专门的位置为视图存储数据。根据视图的概念可以发现其数据来源于查询语句,因此创建视图的语法为:

    create view view_name AS查询语句

    和创建表一样视图名不能和表名、也不能和其他的视图名重名。根据上述语法可以发现,视图的功能实际上就是封装了复杂的查询语句。

    三、学习任务3:查看视图

    创建完视图后,经常需要査看视图信息。那么如何在MySQL数据库管理系统中查看视图呢?查看帮助文档,可以发现有许多可以实现查看视图的语句,例如,SHOW TABLESSHOW TABLE STATUSSHOW CREATE VIEW如果要使用这些语句,首先要确保拥有SHOW VIEW的权限。

    3.1 SHOW TABLES语句查看视图名

    MySQL5.1版本开始,执行SHOW TABLES语句时不仅会显示表的名字,同时也会显示出视图的名字。

    下面演示通过SHOW TABLES语句查看数据库view中视图和表的功能具体语句如下

    USE view;#选择数据库

    SHOW TABLES;#查看视图

    3.2 SHOW TABLE STATUS语句查看视图详细信息

    SHOW TABLE语句一样SHOW TABLE STATUS语句不仅会显示表的详细信息同时也会显示视图的详细信息。SHOWTABLESTATUS语句的语法如下

    SHOW TABLE STATUS FROM db_name】【LIKE 'pattern'】;

    在上述语句中,参数db_name用来设置数据库,关键字SHOW TABLE STATUS表示将显示所设罝数据库里表和视图的详细信息。

    SHOW TABLE STATUS语句返回表示表和视图各种信息的各种字段。

      SHOW TABLE STATUS返回字段含义

    字段名

    含义

    Name

    表和视图的名

    Engine

    表的存储引擎

    Version

    表的.frm文件的饭本号

    Row_format

    表的行存储格式

    Rows

    表中行的数目

    Avg_row_length

    表中行平均行长度

    Dala_length

    表数据文件的长度

    Max_data_length

    表数据文件的最大长度

    Index_length

    表索引文件的长度

    Data_free

    表被整序后,但是未使用的宇节的数目

    Auto_increment

    表中下一个Auto_increment

    Create_time

    表的创建时间

    Update_time

    表的最后一次更新时间

    Check_time

    表的最后一次检査时间

    Collation

    表的字符集

    Checksum

    表的活性校验

    Create_options

    表的额外选项

    Comment

    表的注解

    3.3 SHOW CREATE VIEW语句查看视图定义信息

    如果想査看关于视图的定义信息可以通过语句SHOW CREATE VIEW来实现。SHOW CREATE VIEW语句的语法如下

    SHOW CREATE VIEW viewname

    在上述语句中viewname参数表示所要査看定义信息的视图名称。

    3.4 DESCRIBE|DESC语句查看视图定义信息

    如果想査看关于视图的设计信息,可以通过语句DESCRIBEDESC来实现。DESCRIBEDESC语句的语法如下:

    DESCRIBE | DESC viewname;

    在上述语句中viewname参数表示所要査看设计信息的视图名称。

    3.5 通过系统表查看视图信息

    MySQL数据库安装成功后会自动创建系统数据库information_schema在该数据库中存在一个包含视图信息的表格views,可以通过查看表格views来查看所有视图的相关信息。

    四、学习任务4:创建视图

    视图的操作包括创建视图、查看视图、删除视图和修改视图。本节将详细介绍如何删除视图。 在删除视图时,首先要确保拥有DROP VIEW的权限。

    删除视图的语法形式

    通过DROP VIEW语句可以一次删除一个或者多个视图,关于删除视图的语法如下:

    DROP VIEW view_name 【,view_name ...

    在上述语句中,view_name参数表示所要删除视图的名称。

    五、学习任务5:修改视图

    对于已经创建好的视图,当使用一段时间后,就会需要进行一些结构上的修改,即视图的修改操作。除了可以使用ALTER语句实现修改视图外,还可以通过CREATE OR REPLACE VIEW语句来修改视图。

    5.1 CREATE OR REPLACE VIEW语句修改视图

    对于已经创建好的表尤其是已经有大量数据的表。通过先删除,然后再按照新的表定义重建表方式来修改表时,需要做许多额外的工作,例如数据的重新加载等。可是对于视图来说,由于其是虚表,并没有存储数据,所以完全可以通过该方式来修改视图。

    5.2 ALTER语句修改视图

    与修改表一样,ALTER语句也可以修改视图,修改视图的语法如下:

    ALTER VIEW viewname as查询语句

    在上述语句中参数viewname用来设置修改视图的名称。

    六、学习任务6:利用视图操作基本表

    MySQL中可以通过视图检索基本表数据,这是视图最基本的应用,除此之外还可以通过视图修改基本表中的数据。

    6.1检索(查询)数据

    通过视图査询数据与通过表进行査询完全相同只不过通过视图査询比表更安全、更简单、实用。在具体实现时,只需把表名换成视图名即可。

    6.2利用视图操作基本表数据

    通过前面章节的知识可以知道不仅可以对视图进行查询数据而且还可以对视图进行更新增加、删除和更新数据操作。由于视图是虚表,所以对视图数据进行的更新操作,实际上是对其基本表数据进行更新操作。在具体更新视图数据时,需要注意以下两点:

    对视图数据进行添加、删除和更新操作直接影响基本表。

    视图来自多个基本表时,不允许添加和删除数据。

    更多相关内容
  • 实验视图及数据库系统安全 一、实验目的 1.掌握视图的使用 2.掌握混合模式下数据库用户帐号的建立与取消方法; 3.掌握数据库用户权限的设置方法; 4.掌握服务器角色的用法; 5.掌握SQL-Server中数据库备份和恢复...

    删除登录名 ‘sqlLogin’,因为该用户当前正处于登录状态。 (.Net SqlClient Data Provider)
    办法:
    exec sp_who
    kill spid(id)
    然后删除即可

    实验六:视图及数据库系统安全

    一、实验目的
    1.掌握视图的使用
    2.掌握混合模式下数据库用户帐号的建立与取消方法;
    3.掌握数据库用户权限的设置方法;
    4.掌握服务器角色的用法;
    5.掌握SQL-Server中数据库备份和恢复的方法。
    二、实验学时
    2学时
    三、实验要求
    1.能使用图形化界面和T-SQL语言完成视图的相关操作。
    2.熟悉数据库用户、服务器角色及数据库角色的用法;
    3.了解创建备份设备和进行数据库完全备份操作的方法;
    4.了解进行数据库恢复的步骤;
    5.完成实验报告。
    四、实验内容

    #1. 数据安全性。以系统管理员身份登录到SQL Server服务器,在SQL Server2008界面中实现以下操作,并写出相应程序代码。

    1. 在当前计算机中增加一个用户zhang,密码为secret。使此用户通过windows模式下登录SQL Server服务器,登录名为zhang;
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    2) 新建以混合模式登录SQL Server服务器的用户登录名分别为stu1、stu2和stu3登录密码为secret,默认登录数据库为stu;将登录帐号stu1、stu2和stu3加入到服务器角色sysadmin中;
    在这里插入图片描述
    在这里插入图片描述

    3)删除服务器角色sysadmin的成员stu2和stu3;
    在这里插入图片描述
    在这里插入图片描述

    4)在数据库stu中创建用户zhang,登录帐号为zhang;
    代码:

    create user zhang for login [DESKTOP-A6HMLH7\zhang]
    

    界面:
    出现错误

    5)在数据库stu中创建用户stu1、stu2和stu3,登录帐号为stu1、stu2和stu3;

    代码:

    create user stu1 for login stu1
    create user stu2 for login stu2
    create user stu3 for login stu3
    

    界面:

    6)给数据库用户zhang赋予创建数据表的权限;

    GRANT create table 
    TO zhang
    

    7)给数据库用户stu1赋予对sc表进行插入、修改、删除操作权限;

    GRANT insert,update,delete
    on XSKC.sc
    TO stu1
    

    8)给数据库用户stu2和stu3赋予对student表、course表所有操作权限及查询sc的操作权限,并允许再授权给其他用户;

    grant insert,update,delete,select
    on XSKC.student
    to stu2,stu3
    with grant option
    
    
    grant insert,update,delete,select
    on XSKC.course
    to stu2,stu3
    with grant option
    
    grant select
    on XSKC.sc
    to stu2,stu3
    with grant option
    

    9)回收数据库用户stu2对student表和course表的删除操作的权限;

    REVOKE select 
    ON  XSKC.student 
    FROM stu2 CASCADE
    
    REVOKE select 
    ON  XSKC.course 
    FROM stu2 CASCADE
    

    2.以实验数据库为基础数据,利用对象资源管理器创建以下视图:
    1)创建所有学生学号、姓名及年龄的信息视图v_stu_info
    代码:
    create view v_stu_info
    as
    select sno,sname,sage
    from XSKC.student
    界面:(注意选择列的顺序)
    在这里插入图片描述

    2)创建CS系学生基本信息视图v_stu_cs
    代码:

    create view v_stu_cs
    as 
    select *
    from XSKC.student
    where sdept='cs'
    

    界面:(注意选择列的顺序)
    在这里插入图片描述
    在这里插入图片描述

    3)创建选修课成绩在80分以上的学生的信息视图
    v_stu_80,包括学生基本情况及成绩。
    代码:

    create view v_stu_80
    as 
    select XSKC.student.*,XSKC.sc.grade
    from XSKC.student,XSKC.sc
    where grade>=80 and XSKC.student.sno=XSKC.sc.sno
    

    在这里插入图片描述

    1. 以实验数据库为基础数据,请使用T-SQL语句完成以下内容,并将SQL语句写在实验报告册中:
    1. 创建v_CS视图,包括CS系各学生的学号、姓名及年龄,要求进行修改和插入操作时仍需保证该视图只有CS系的学生;
    create view v_CS
    as 
    select sno,sname,sage
    from XSKC.student
    where sdept='CS'
    with check option
    
    1. 创建v_CS_age20视图,包括CS系学生年龄在20岁以上的基本信息;并保证对视图文本的修改都要符合年龄大于20这个条件。
    create view v_CS_age20
    as 
    select *
    from XSKC.student
    where sdept='CS' and sage>20
    with check option
    
    1. 创建一个视图vstu_cg,用于查看学生学号、姓名、课程和成绩信息,并用WITH ENCRYPTION加密。
    create view vstu_cg
    with encryption/*注意此语句位置*/
    as 
    select XSKC.student.sno,XSKC.student.sname,XSKC.sc.cno,XSKC.sc.grade 
    from  XSKC.student,XSKC.sc
    where XSKC.student.sno=XSKC.sc.sno
    
    1. 试着向视图v_CS中插入一个新的学生记录,(‘200515026’,‘赵红平’,‘21’),是否能插入成功,原因是什么?如何修改视图才可以插入成功?
    消息 550,级别 16,状态 1,第 9 行
    试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。
    语句已终止。
    
    
    
    alter view v_CS
    as 
    select sno,sname,sage
    from XSKC.student
    where sdept='CS'
    
    1. 利用视图v_CS修改学号为200515001的学生姓名为“赵青青”;
    update v_CS
    set sname='赵青青'
    where sno='200515001'
    
    1. 利用视图v_CS删除CS系学号为200515003的记录;
    delete 
    from v_CS
    where sno='200515003'
    
    1. 删除视图v_CS_age20;
    drop view v_CS_age20
    
    展开全文
  • Arcgis()——布局视图技巧

    万次阅读 2021-02-22 09:12:49
    1数据视图的大小影响布局视图的大小 2布局视图插入不同数据框可以展示不同图片 3数据框里可以添加多个数据,添加的数据不会保存之前的可视化 但是复制进去就行 4数据框的边线:右键-属性-框架-边框里面设置为无 ...

    目录:

    1目标:呈现多张图片

    2流程:

    (1)页面和打印设置

    (2)调出标尺和参考线

    (3)插入数据框

    3布局视图技巧:

    1目标:呈现多张图片

    2流程:

    (1)页面和打印设置

     

     (2)调出标尺和参考线

    (3)插入数据框

    3布局视图技巧:

    1数据视图的大小影响布局视图的大小

    2布局视图插入不同数据框可以展示不同图片

    3数据框里可以添加多个数据,添加的数据不会保存之前的可视化

     但是复制进去就行

    4数据框的边线:右键-属性-框架-边框里面设置为无

    5布局视图的最外边缘性一开始设置为最大比较合适

    6布局视图里面无法更改数据视图里面的值

    7布局视图里的数据不会出现在栅格计算器里面

    8布局视图里面不同数据最好在数据视图里面统一比例尺寸

    9插入图例:分类图需要选标题,连续图不用

    10合并分类后图,再做掩膜分开不了

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 四、Oracle 视图

    2022-02-25 20:26:04
    视图 是一种数据库对象,是从一个或者多个数据表或视图中导出的 虚表。 视图所对应的 数据并不真正地存储在视图中,而是存储在所引用的数据表中。 视图的结构和数据,是对数据表进行查询的结果。

    一、视图

    • 视图 是一种数据库对象,是从一个或者多个数据表或视图中导出的 虚表
    • 视图所对应的 数据并不真正地存储在视图中,而是存储在所引用的数据表中。
    • 视图的结构和数据,是对数据表进行查询的结果。

    • 根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合。
    • 它存储了要执行检索的 查询语句的定义,以便在引用该视图时使用。

    • 使用视图的优点:
    1. 简化数据操作:视图可以简化用户处理数据的方式。
    2. 着重于特定数据:不必要的数据或敏感数据,可以不出现在视图中。
    3. 视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限。
    4. 提供向后兼容性:视图使用户能够在表的架构更改时,为表创建向后兼容接口。

    1. 创建修改视图

    CREATE [OR REPLACE] [FORCE] VIEW 'view_name'
    AS 'sub_query'
    [WITH CHECK OPTION]
    -- 只读
    [WITH READ ONLY] 
    

    参数说明
    OR REPLACE若所创建的试图已经存在,Oracle 自动重建该视图
    FORCE不管基表是否存在 Oracle 都会自动创建该视图
    sub_query一条完整的 SELECT 语句,可以在该语句中定义别名
    WITH CHECK OPTION数据表插入或修改的数据行,必须满足视图定义的约束
    WITH READ ONLY该视图上不能进行任何 DML 操作

    2. 删除视图

    DROP VIEW 'view_name'; 
    

    二、试图案例


    1. 简单视图

    • 如果视图中的语句只是 单表查询,并且 没有聚合函数,我们就称之为 简单视图

    • 需求:创建视图,业主类型为 1 的业主信息。
    create or replace view `view_owners` 
    as
    select * from T_OWNERS where ownertypeid = 1;
    
    • 查询该视图。
    select * from `view_owners` where addressid = 1;
    
    • 就像使用表一样,去使用视图就可以了。
    • 对于简单视图,不仅可以用查询,还可以增删改记录。
    update `view_owners` set name='王刚' where id = 2;
    
    select * from `view_owners`;
    
    • 再次查询表数据,发现表的数据也跟着更改了。
    • 结论:视图其实是一个虚拟的表,它的数据其实来自于表。
    1. 如果更改了视图的数据,表的数据也自然会变化。
    2. 更改了表的数据,视图也自然会变化。
    3. 一个视图所存储的并不是数据,而是一条 SQL 语句。

    2. with check option 带检查约束视图

    • 需求:根据 T_ADDRESS(地址表)创建视图 VIEW_ADDRESS,内容为 区域ID2 的记录。
    create or replace view `view_address` 
    as
    select * from T_ADDRESS where areaid = 2 
    with check option;
    
    • 执行更新语句,报错。
    -- 无法修改成功
    -- 因为该视图的条件是`arreaid = 2`,不能修改为`arreaid = 1`。
    update `view_address` set areaid = 1 where id = 4;
    
    • 错误信息:
      ORA-01402: view WITH CHECK OPTION where-clause violation
      在这里插入图片描述

    3. with read only 只读视图

    • 如果创建一个视图,并不希望用户能对视图进行修改。
    • 就需要创建视图时,指定 WITH READ ONLY 选项,这样创建的视图就是一个 只读视图

    • 需求:修改视图为只读视图。
    create or replace view `view_owners` 
    as
    select * from T_OWNERS where ownertypeid = 1 
    with read only;
    
    • 执行更新语句,报错。
    update `view_owners` set name='王强' where id = 2;
    
    • 错误信息:
      ORA-42399: cannot perform a DML operation on a read-only view
      在这里插入图片描述

    4. 带错误视图

    • 创建一个视图,如果视图的 SQL 语句所设计的表并不存在。
    -- 错误视图,创建不成功
    create or replace view `view_TEMP`
    as
    -- `T_TEMP`表不存在
    select * from `T_TEMP`; 
    
    • T_TEMP 表并不存在。
      在这里插入图片描述
    • 有的时候,创建视图时的表可能并不存在,但是以后可能会存在。
    • 如果此时需要创建这样的视图,需要添加 FORCE 选项。
    create or replace FORCE view `view_TEMP` 
    as
    select * from `T_TEMP`;
    

    5. 复杂视图

    • 复杂视图,就是视图的 SQL 语句中,有 聚合函数多表关联查询

    5.1 多表关联查询

    • 需求:创建视图,查询显示业主编号,业主名称,业主类型名称。
    create or replace view `view_owners` 
    as
    select o.id '业主编号', o.name '业主名称', ot.name '业主类型' 
    from T_OWNERS o, T_OWNERTYPE ot 
    where o.ownertypeid = ot.id;
    
    • 查询该视图。
    select * from `view_owners`;
    
    • 修改该视图。
    -- 更新成功
    update view_owners set '业主名称' = '范小冰' where '业主编号' = 1;  
    -- 更新失败
    update view_owners set '业主类型' ='普通居民' where '业主编号' = 1;
    
    • 出错误提示:是说所需改的列不属于键保留表的列。
      ORA-01779: cannot modify a column which maps to a non key-preserved table
      在这里插入图片描述
    • 什么叫键保留表。
    1. 键保留表,是理解连接视图修改限制的一个基本概念。
    2. 该表的主键列全部显示在视图中,并且它们的值在视图中都是唯一且非空的。
    3. 也就是说,表的键值在一个连接视图中也是键值,那么就称这个表为 键保留表
    • 该视图中存在两个表 T_OWNERS(业主表)和 T_OWNERTYPE(业主类型表)。
    1. 其中 T_OWNERS 表就是 键保留表
    2. 因为 T_OWNERS 的主键也是作为视图的主键。
    3. 键保留表的字段是可以更新的,而非键保留表是不能更新的

    7.2 分组聚合统计查询

    • 需求:创建视图,按年月统计水费金额。
    create view `view_account_sum` 
    as
    -- 必须 + `money_sum` 别名
    select year, month, sum(money) money_sum from `T_ACCOUNT` 
    group by year, month
    order by year, month;
    
    • 修改该视图。
    update view_account_sum set money_sum = money_sum - 100 where year = 2012 and month = 12;
    
    • 此例用到聚合函数,没有键保留表,所以无法执行 update
      ORA-01732: data manipulation operation not legal on this view
      在这里插入图片描述

    三、物化视图

    • 视图是一个 虚拟表(也可以认为是一条语句)。
    1. 基于它创建时,指定的查询语句返回的结果集。
    2. 每次访问它,都会导致这个查询语句被执行一次。
    3. 为了避免每次访问都执行这个查询,可以将这个查询结果集存储到一个 物化视图(也叫实体化视图)。

    • 物化视图 与普通的视图相比的区别是。
    1. 物化视图是建立的副本。
    2. 它类似于一张表,需要占用存储空间。
    3. 而对一个物化视图查询的执行效率与查询一个表是一样的。
    # 物化视图日志(Tables)
    MLOG$_'表名'
    
    # 物化视图(Tables)
    MV_'表名'
    

    1. 创建物化视图

    • 生成数据
    1. BUILD IMMEDIATE:是在创建物化视图的时候就生成数据(默认)。
    2. BUILD DEFERRED:则在创建时不生成数据,以后根据需要再生成数据。
    • REFRESH:刷新,指当基表发生了 DML 操作后,物化视图何时采用哪种方式和基表进行同步。
      REFRESH 后跟着指定的刷新方法有三种:FASTCOMPLETEFORCE
    1. FAST:采用增量刷新,只刷新自上次刷新以后进行的修改。
    2. COMPLETE:对整个物化视图进行完全的刷新。
    3. FORCE:刷新时去判断是否可以快速刷新,如果可以则采用 FAST 方式,否则采用 COMPLETE 的方式(默认)。
    • 刷新的模式。
    1. ON DEMAND:指需要手动刷新物化视图(默认)。
    2. ON COMMIT:指在基表发生 COMMIT 操作时自动刷新。
    CREATE MATERIALIZED VIEW 'view_name'
    -- 立即显示 | 延迟显示
    [ 'BUILD IMMEDIATE' | BUILD DEFERRED ] 
    -- 快 | 完全 | 快or完全
    REFRESH [ FAST | COMPLETE | 'FORCE' ]  
    [ON [ 'DEMAND' | COMMIT ] | START WITH (start_time) NEXT (next_time)]
    AS 'sub_query';
    

    四、物化试图案例


    1. 创建 手动刷新 的物化视图

    • 需求:查询地址ID、地址名称和所属区域名称。
    create materialized view `mv_address`
    as
    select ad.id, ad.name adname, ar.name ar_name 
    from t_address ad, t_area ar 
    where ad.areaid = ar.id;
    

    • 执行查询语句。
    select * from `mv_address`;
    

    • 向基表 T_ADDRESS(地址表)中插入一条新记录。
    insert into `t_address` values (8, '宏福苑小区', 1, 1);
    

    • 再次执行查询语句,会发现新插入的数据并没有出现在物化视图中。
    1. 需要通过下面的 PL/SQL 语句,手动刷新物化视图。
    begin
    	-- `C`完全刷新(COMPLETE)
    	DBMS_MVIEW.refresh('MV_ADDRESS', 'C'); 
    end;
    

    1. 或者通过下面的命令,手动刷新物化视图。
    -- 注意:此命令需要在命令窗口中执行。
    EXEC DBMS_MVIEW.refresh('MV_ADDRESS', 'C');
    
    • DBMS_MVIEW.refresh 是系统内置的存储过程。
    • 执行命令后,再次查询物化视图,就可以查询到最新的数据了。

    2. 创建 自动刷新 的物化视图

    • 创建此物化视图后,当 T_ADDRESS 表发生变化时,MV_ADDRESS 自动跟着改变。
    create materialized view `mv_address_2`
    refresh
    -- 自动刷新
    on commit 
    as
    select ad.id,ad.name adname,ar.name ar_name 
    from t_address ad,t_area ar 
    where ad.areaid=ar.id;
    

    3. 创建时 不生成数据 的物化视图

    create materialized view `mv_address_3`
    -- 创建不生成数据
    build deferred 
    refresh
    -- 自动刷新
    on commit 
    as
    select ad.id,ad.name adname,ar.name ar_name 
    from t_address ad,t_area ar 
    where ad.areaid=ar.id;
    

    • 创建后执行下列语句查询物化视图,没有数据。
     select * from `mv_address_3`;
    

    • 执行下列语句生成数据。
    begin
       DBMS_MVIEW.refresh('MV_ADDRESS3', 'C');
    end;
    
    • 由于创建时指定的 on commit
    • 所以在修改数据后能立刻看到最新数据,无须再次执行 refresh

    4. 创建 增量刷新 的物化视图

    • 如果创建增量刷新的物化视图,必须首先创建物化视图日志。
    • 记录基表发生了哪些变化,用日志去更新物化视图。
    -- 根据`rowid`
    create materialized view log on t_address with rowid; 
    create materialized view log on t_area with rowid;  
    

    • 创建的物化视图日志名称为 MLOG$_表名称
    create materialized view `mv_address_4`
    -- 增量刷新
    refresh fast 
    as
    select ad.rowid adrowid, ar.rowid arrowid, ad.id, ad.name adname, ar.name ar_name  
    -- 需要创建两表日志
    from t_address ad, t_area ar  
    where ad.areaid = ar.id;
    

    • 注意:创建增量刷新的物化视图。
    1. 创建物化视图中涉及表的物化视图日志。
    2. 在查询语句中,必须包含所有表的 rowid(以 rowid 方式建立物化视图日志)

    • 当向地址表插入数据后,物化视图日志的内容。
    参数说明
    SNAPTIME$$用于表示刷新时间。
    DMLTYPE$$用于表示 DML 操作类型(I 表示 INSERTD 表示 DELETEU 表示 UPDATE)。
    OLD_NEW$$用于表示这个值是新值还是旧值(NEW)表示新值,OLD)表示旧值,U 表示 UPDATE 操作)。
    CHANGE_VECTOR$$表示修改矢量,用来表示被修改的是哪个或哪几个字段(此列是 RAW 类型)。
    其实 Oracle 采用的方式就是用每个 BIT 位去映射一个列。
    插入操作显示为:FE,删除显示为:OO,更新操作则根据更新字段的位置而显示不同的值。

    • 当手动刷新物化视图后,物化视图日志被清空,物化视图更新。
    begin
        DBMS_MVIEW.refresh('MV_ADDRESS4', 'C');
    end;
    

    展开全文
  • 对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。Refresh方法- COMPLETE子句完全刷新重新生成整个视图,如果请求完全刷新,oracle会完成 完全刷新即使增量刷新可用。Refresh Method – FORCE ...
  • 什么是视图 小学的时候,每年都会举办一次抽考活动,意思是从每一个班级里面筛选出几个优秀的同学去参加考试。这时候很多班级筛选出来的这些同学就可以临时组成一个班级,如果我们把每一个班级都当做是一张真实的...
  • Hive 系列()—— Hive 视图和索引

    千次阅读 2019-06-07 16:46:20
    视图是纯粹的逻辑对象,没有关联的存储(Hive 3.0.0引入的物化视图除外),当查询引用视图时,Hive可以将视图的定义与查询结合起来,例如将查询中的过滤器推送到视图中。 1.2 创建视图 CREATE VIEW [IF NOT EXISTS] ...
  • 识读第三角视图(机械识图)

    千次阅读 2020-11-30 15:25:09
    为了便于了解第三角视图的画法,本章将第三角画法和我们所熟悉的第一角画法做比较,帮助读者掌握第三角视图的识图规律。 1.投影形成的异、同点 如图13-la所示,两个互相垂直相交的投影面,将空间分为四个角,依次...
  •  SpringMVC用于处理视图最重要的两个接口是ViewResolver(视图解析器)和View(视图)。ViewResolver的主要作用是把一个逻辑上的视图名解析为一个真正的视图,解析的时候会向视图中填充模型数据。SpringMVC中用于把视图...
  • 实验目标: 1.掌握交互式创建、删除视图的方法 2.掌握使用SQL创建、删除视图的方法 3.掌握交互式更新视图的方法 4.掌握使用SQL更新视图的方法 ...  视图是一个或者多个表中导出的,视图的行为与...
  • 目录,更新ing,学习Java的点滴记录   目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录 SpringMvc知识 第一篇---->...第篇---->拦截器开发 处理模型数据 1 介绍 视
  • 要想在 Xcode 中预览画布中的视图,或者与画布中的视图进行交互,需要 Mac 系统版本号不低于 macOS Catalina 10.15。 ② 步骤 打开 Xcode,在启动页面点击创建新工程,或者在菜单中选择文件->新建->项目: ...
  • 使用大纲视图生成章节目录的步骤步骤一:现在大家看这个没有太多格式的文档,假设它就是你的论文。使用大纲视图生成章节目录的步骤图1步骤二:在Word中目录可以自动生成,目录来自于文档的结构。我们的文档还没有...
  • 编辑器扩展总结 ...场景视图是编辑游戏对象的窗口,扩展场景视图可以实现网格编辑,地形绘制或高级Gizmos等操作。视图的扩展主要通过OnSceneGUI()方法实现,因为场景扩展是基于场景对象的,所以可以选择不同
  • mysql_视图与变量

    2021-07-22 21:33:35
    1.视图 一、含义 mysql5.1版本出现的新特性,本身是一个虚拟表,它的数据来自于表,通过执行时动态生成。 好处: 1、简化sql语句 2、提高了sql的重用性 3、保护基表的数据,提高了安全性 二、创建 create view 视图...
  • 您所在位置:网站首页 > 海量文档&nbsp>&nbsp幼儿/小学教育&nbsp>&nbsp小学课件索引和视图(实验报告).doc7页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不...
  • 在我们真正的使用演示文稿编辑幻灯片的过程中,对幻灯片进行晰、编辑等操使用会需要使用不同的视图,PowerPoint 2013中具体的视图功能如下。一、普通视图(幻灯片预览窗格)普通视图是主要的编辑视图,可用于撰写或...
  • 实验6 OpenGL模型视图变换

    千次阅读 2020-10-21 15:44:10
    理解掌握OpenGL程序的模型视图变换。 掌握OpenGL三维图形显示与观察的原理与实现。 2.实验内容: (1)阅读教材有关三维图形变换原理,运行示范实验代码,掌握OPENGL程序三维图形变换的方法; (2)阅读实验原理,运行...
  • 关系数据库——视图/存储过程/触发器

    千次阅读 多人点赞 2019-12-02 09:51:43
    视图 视图是虚拟的表,与包含数据的表不同,视图只包含使用时动态检索数据的查询,主要是用于查询。 为什么使用视图 重用sql语句 简化复杂的sql操作,在编写查询后,可以方便地重用它而不必知道他的基本查询细节...
  • Django视图

    2019-01-09 16:33:54
    视图(view)  一、概述 1.1、作用 接受web请求,并响应web请求。 1.2、本质 视图就是一个python中的函数。大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中。 1.3、...
  • 在第一篇中已经讲过,LayoutManager主要用于布局其中的Item,在LayoutManager中能够对每个Item的大小,位置进行更改,将它放在我们想要的位置,在很多优秀的效果中,都是通过自定义LayoutManager来实现的,比如: ...
  • MFC文档视图结构

    千次阅读 2018-04-01 15:19:23
    文档/视图概述为了统一和简化数据处理方法,Microsoft公司在MFC中提出了文档/视图结构的概念,其产品Word就是典型的文档/视图结构应用程序MFC通过其文档类和视图类提供了大量有关数据处理的方法分为数据的管理和显示...
  • VS Code插件开发教程--树视图+网页视图完整demo+图--1简介一、安装二、初识 VS code 插件 demo三、treeView: 重识 package.json 简介 你好! 本人为 2019.7 毕业的应届毕业生,目前从事前端工程师的职业。对知识充满...
  • 视图视图层次结构在接下来的五章中,您将构建一个名为 WorldTrotter 的应用程序。 完成后,此应用程序将转换华氏温度和摄氏温度之间的值。 在本章中,您将通过创建 WorldTrotter 的UI来了解视图视图层次结构。
  • 它只用了点云的俯视图和前视图,这样既能减少计算量,又保留了主要的特征信息。随后生成3D候选区域,把特征和候选区域融合后输出最终的目标检测框。 论文地址:Multi-View 3D Object Detection Network for ...
  • 阅读了我的前两篇博客的朋友,应该都熟练掌握了 SwiftUI 如何创建一个任何相关信息的展示视图和各个视图之间的相互组合,以及动态生成一个展示相关信息的可滚动列表,用户可以点击列表项去查看其相关的详细 信息。...
  • 实验原理我们生活在一个三维的世界——如果要观察一个物体,我们可以:1、从不同的位置去观察它(人运动,选定某个位置去看)。(视图变换)2、移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大...
  • 2.3.1 组合体的形成方式及其表面间的过渡关系2.3.2 组合体视图的绘制2.3.3 组合体视图的阅读§2.3 组合体视图的绘制和阅读本节要求1.掌握组合体的形成方式和表面过渡关系2.熟练掌握形体分析法3.掌握组合体视图的绘图...
  • 查询不重复记录二、对结果进行分组三、限制结果条目四、设置别名(alias ——》as)五、通配符、子查询1.子查询-exists2.子查询,别名as 前言 (增、删、改、查) 对 MySQL 数据库的查询,除了基本的查询外,有...
  • 1、理解视图解析 将控制器中请求处理的逻辑和视图中的渲染实现解耦是Spring MVC 的一个重要特性。如果控制器中的方法直接负责产生HTML的话,就很难在不影响请求处理逻辑的前提下,维护和更新视图。控制器方法和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,295
精华内容 26,118
关键字:

六视图位置