1.1 序列

序列:在内存预先申请的一段地址空间,类似于取号排队。创建序列:

DM8 序列、同义词、物化视图_自动更新

CREATE SEQUENCE "TEST"."S1"

INCREMENT BY 2  ---递增多少

START WITH 1  ----起始值

MAXVALUE 10  -----最大值

MINVALUE 1;  -----最小值

Cache2    缓存nocache

Order    排序  noorder

Cycle    循环 nocycle

DM8 序列、同义词、物化视图_物化视图_02

SELECT test.s1.nextval;

DM8 序列、同义词、物化视图_物化视图_03

DM8 序列、同义词、物化视图_自动更新_04

alter sequence test.s1    maxvalue 30;

DROP sequence test.s1

1.2 同义词

同义词:表或视图、序列、函数、存储过程的别名,为安全考虑,同 义词分为公共同义词,普通同义词

公共同义词:所有用户都可以使用的,使用的时候不需要加任何模式 名。达梦用的数据字典、动态性能视图都sys 的公共同义词。SYS 是达梦的内置管理账号,不能用于登录数据库。

DM8 序列、同义词、物化视图_自动更新_05

普通同义词:某个特定用户才可以使用的,使用的时候要加模式名。 

创建同义词;                                               

1 、创建普通同义词

CREATE SYNONYM "TEST"."SY1" FOR "TEST"."S1";

DM8 序列、同义词、物化视图_自动更新_06

DM8 序列、同义词、物化视图_物化视图_07

2 、创建公共同义词

DM8 序列、同义词、物化视图_物化视图_08

CREATE PUBLIC SYNONYM "SY3" FOR "TEST"."SALES_SUM";

DM8 序列、同义词、物化视图_数据_09

删除公共同义词

Drop    public synonym    SY3;

删除普通同义词

DROP SYNOYNYM TEST.SY1;

1.3 物化视图

视图分类:简单视图,复杂视图,物化视图。                   

简单视图和复杂视图不占磁盘空间,实际上是一个虚表,真正的数据 存储在base table.                                                                                                 

简单视图可以DML(INSERT UPDATE DETLE);                                                   

复杂视图不允许直接DML, 需要通过触发器来完成。触发器创建时不需要使用before after,而将替换成instead of。                                     

当视图中包含以下结构之一,就是表示不可更新的视图,都不允许直 接 DML

  1. 具有集合操作的 union union all    minus);   
  2. 具有分组函数的
  3. 具有group by    having    start....with        
  4. 具有distinct                            
  5. 具有集合运算连接,

物化视图:                                                 

数据要单独存储,占用磁用空间,规划表空间。                 

物化视图的数据来自于基表,基表发生变化,物化视图可以根据更新 方式来进行数据更新。                                       

更新方式:

手动:demand

自动更新:commit

如何更新:

​FAST    ----快速更新

Complete    ---完全更新

Force      ---选择性更新

Never    ---不更新。

案例 1 :创建一个手动更新的物化视图

create materialized view TEST.MV1    AS    SELECT    * FROM TEST.T1;

DM8 序列、同义词、物化视图_数据_10

SYSDBA没有创建物化视图的权限需要修改TEST用户系统权限

需要先给TEST用户授权,建表权限、创建视图权限、创建物化视图权限,图形化设置不好使,最好直接使用SQL语句创建。

GRANT CREATE TABLE TO "TEST";

GRANT CREATE VIEW TO "TEST";

GRANT CREATE MATERIALIZED VIEW TO "TEST";

DM8 序列、同义词、物化视图_物化视图_11

DM8 序列、同义词、物化视图_数据_12

create materialized view test.mv2 as SELECT * FROM test.t1 WHERE id>200; 修改test.t1,手动更新MV1,MV2;

refresh materialized view test.mv1;

案例2 :创建一个自动更新的物化视图

DM8 序列、同义词、物化视图_物化视图_13

//创建物化视图日志的表必须要有主键否则创建失败

create materialized view log on test.t1;

create materialized view test.mv3 refresh complete on commit as SELECT * FROM test.t1;

创建物化视图日志

create materialized view log on test.t1;

创建完全更新物化视图

create  materialized  view  test.mv3  refresh      complete  on  commit  as SELECT * FROM test.t1;

创建快速更新物化视图

create  materialized view  test.mv4  refresh fast  on  commit  as  SELECT  * FROM test.t1;

DM8 序列、同义词、物化视图_自动更新_14

DM8 序列、同义词、物化视图_自动更新_15

1 、物化视图:mv1,mv2,mv3,mv4

2 、物化视图表:MTAB$_MV2

3 、 自动更新物化视图,则会有物化视图日志:MLOG$_T1

DM8 序列、同义词、物化视图_自动更新_16

4 、定时刷新物化视图的触发器:MTRG$_T1

DM8 序列、同义词、物化视图_自动更新_17