达梦数据库中的视图、序列、索引

视图分类:简单视图,复杂视图,物化视图。
注意:简单视图和复杂视图,不点磁盘空间。物化视图会占用磁盘空间
1、简单视图
创建:语法 create view() as select () from () where ();
SQL> create view test2.v1 as select * from dmhr.employee;
修改:语法 create or replace view () as select () from () where()
SQL> create or replace view test2.v1 as select employee_name,salary from dmhr.employee;
删除:
SQL> drop view test2.v1;
4、如何查看表结构
SQL> sp_tabledef(‘TEST2’,‘STU’);
SQL> select Dbms_metadata.get_ddl(‘TABLE’,‘STU’,‘TEST2’);

2、序列
(预分配的一组内存空间)
DM,ORALCE都没有自增列,用序列作为自增列。
创建:
SQL> create sequence test2.s1
2 start with 1 —序列的起始
3 increment by 1 —自增多少
4 maxvalue 5 —最大值
5 nocache ----是否缓存
6 nocycle; —是否循环
操作已执行
CREATE SEQUENCE “TEST2”.“S2” INCREMENT BY 1 START WITH 1 MAXVALUE 1100 MINVALUE 1 ORDER;
应用:
SQL> create table test2.t12(id int primary key);
SQL> insert into test2.t12 values(test2.s1.nextval);
SQL> insert into test2.t12 values(test2.s1.nextval);
SQL> insert into test2.t12 values(test2.s1.nextval);
SQL> insert into test2.t12 values(test2.s1.nextval);
SQL> insert into test2.t12 values(test2.s1.nextval);

修改:
SQL> alter sequence test2.s1 maxvalue 10;

SQL> select test2.s1.nextval;
行号 NEXTVAL


1 6
SQL> insert into test2.t12 values(test2.s1.nextval);
SQL> insert into test2.t12 values(test2.s1.nextval);

删除:
SQL> drop sequence test2.s1;
3、同义词
对表或者视图进行别名,安全考虑
分类:普通,公共
创建:
普通同义词
SQL> create public synonym test2.sy2 for dmhr.employee;
公共同义词
SQL> create public synonym sy2 for dmhr.employee;
查询同义词

删除同义词
SQL> drop synonym test2.sy1;
SQL> drop public synonym sy2;
4、索引
达梦支持那些索引:
二级索引,位图索引,唯一索引,复合索引,函数索引,分区索引等等。达梦默认的表是索引组织表,利用rowid创建一个默认的索引,这个是一级索引,所以我们自己创建的索引,称为二级索引。
1、查看表的索引
SQL> select table_name,index_name from dba_indexes where table_name=‘T12’;

2、索引的作用:
加快表的查询,对数据库做DML操作的时候,数据库会自动维护索引。索引是一棵倒置的树,使用索引,就是对这棵树做遍历。
3、建立索引的规划:
1:经常查询的列
2:连接条件列
3:谓词经常出现的列(where)
4: 查询是返回表的一小部分数据。
不适合做索引的情况:
1、经常增删的列
2、表的数据量小
3、列上的有大量的null
4、列上的数据有限(例如:性别)

怎么去创建索引:
1、规划索引表空间
2、表的数据是无序的,索引的数据是有序的。
案例:
Emp 中的Employee_id表建立索引。
建表:
SQL> create table test2.emp as select * from dmhr.employee;
索引表空间
SQL> create tablespace index1 datafile ‘/dm7/data/DAMENG/index01.dbf’ size 32;
建索引:
SQL> create index ind_emp on test2.emp(employee_id) tablespace index1;
查询索引:
SQL> select table_name,index_name from dba_indexes where table_name=‘EMP’;

5、查看表的执行计划:

没有走我们自己建的索引,统计信息是旧的,需要重新收集。
收集统计信息?
Sp_create_system_packages(1) 创建系统包。
SQL> begin
dbms_stats.gather_table_stats(‘TEST2’,‘EMP’);
end;

注意:创建索引、删除、重建索引和收集统计信息,不要在业务高峰去做。
维护索引?
重建:
SQL> alter index test2.ind_emp rebuild;
操作已执行
已用时间: 6.689(毫秒). 执行号:403.
SQL> alter index test2.ind_emp rebuild online;
操作已执行
已用时间: 52.180(毫秒). 执行号:404.
删除:
SQL> drop index test2.ind_emp;
操作已执行
已用时间: 10.606(毫秒). 执行号:405.
Oracle:默认每天晚上10点收集统计信息,达梦默认不收集(直方图,统计信息),需要手动去收集。

你可能感兴趣的:(国产化达梦数据库)