达梦 外部表、视图、索引学习

外部表:

在数据库服务器上任一路径下(例如:c:\)编写控制文件ctrl.txt;

LOAD DATA

INFILE 'D:\tt\test1.txt'(数据文件路径)

INTO TABLE TEST1.TXT

FIELDS ','

在步骤1中指定的data.txt存放路径下编写data.txt文件;

创建外部表;

create external table test1 (c1 int,c2 int,c3 int) from 'D:\tt\test1.ctl';--(命令文件路径)

查询外部表数据

select * from test1;

外部表是表文件,所以不会放在数据库里面,会放在操作系统里面。通过数据库管理工具可以查看外部表的数据库,外部表只能对外部表进行查询。

1、建立外部表时,不会产生页、簇、段等存储结构。

2、只能与表相关的定义放在数据库字典中,不能对外部表的内容进行修改(update 、inster delete)A

3、不能对外部表创建索引。

4、外部表可以通过sql语句解码器来完成。而不需要将外部表装载到数据库中。

视图管理:

视图有普通视图和物化视图两种,它们的区别是普通视图不含数据,但物化视图含数据并占存储空间。然后视图只有逻辑表,每次使用视图的时候都只是再重新执行sql。

普通视图:

建表并插入数据;

create table test(a int,b varchar(50),c date);
insert into test values(1,'路人甲','2010-01-02');
insert into test values(2,'路人乙','2011-01-02');
insert into test values(3,'路人丙','2012-01-02');

 

创建表上的视图并查询视图;

create view test1 as select * from test where a=3;

修改基表并重编译视图;

alter table test add column(d char(10));
select * from test;

alter view test compile;
select * from test;

 

对视图进行数据更新、删除操作

更新:

update test1 set b='路人丁' where a=3;
select * from test1;

删除:

drop view test1;

物化视图:

建表并创建物化视图;

create table test1(a1 int,a2 varchar(50),a3 date);
create table test2(b1 int,b2 varchar(50),b3 date);
insert into test1 values(1,'aaa','2020-09-22');
insert into test2 values(2,'bbb','2021-11-12');
insert into test1 values(3,'ccc','2020-09-28');
insert into test2 values(3,'aaa','2021-09-22');
insert into test1 values(4,'bbb','2020-11-12');
insert into test2 values(2,'ccc','2021-09-28');

create materialized view test(v1,v2,v3) 
build immediate refresh complete enable query rewrite 
as select 
test1.a1 as v1,test1.a2 as v2,test1.a3 as v3
from test1,test2 where test1.a1=test2.b1;

对物化视图执行查询、修改、更新和删除操作

查询:

select * from test;

 修改:

alter materialized view st2 disable query rewrite;

更新:

refresh materialized view test complete;

删除:

drop materialized view test;

 

所有操作成功执行

索引管理:

创建模式TS

建表,并在某一列建立普通B树索引
create tablespace TS datafile 'TS.dbf' size 128;
create table TS.t1(a1 int,a2 varchar(50),a3 date);
create index t1_inx on TS.t1(a1)
storage (initial 50,next 50,on TS);

建表,并在某一列上建立聚集索引
create table TS.t2(a1 int,a2 varchar(50),a3 date);
create cluster index t2_inx on TS.t2(a1);

建表,并在某一列上建立分区索引
create table TS.t3(a1 int,a2 varchar(50),a3 date)storage(branch(2,4));              
create index t3_inx on TS.t3(a1) global partition by range(a1)(partition p1 values less than (20),
partition p2 values less than (maxvalue));

建表,并在某一列上建立唯一索引
create table TS.t4(a1 int,a2 varchar(50),a3 date);
create unique index t4_inx on TS.t4(a1);

建表,并在某一列上建立位图索引
create table TS.t5(a1 int,a2 varchar(50),a3 date);
create bitmap index t5_inx on TS.t5(a1);

建表,并在某一列上建立位图连接索引
create table TS.t6_1(a1 int unique,a2 varchar(50),a3 date);
insert into TS.t6_1 values(1,'gguysd','2020-07-23');
insert into TS.t6_1 values(2,'hcydsv','2021-09-25');
insert into TS.t6_1 values(3,'sduzhv','2017-03-14');
create table TS.t6_2(b1 int unique,b2 varchar(50),b3 date);
insert into TS.t6_2 values(4,'aaaaa','2034-07-23');
insert into TS.t6_2 values(3,'bbbbb','2056-09-25');
insert into TS.t6_2 values(2,'ccccc','2016-03-14');
create bitmap index t6_inx on TS.t6_1(a1) from TS.t6_1,TS.t6_2 where TS.t6_1.a1=TS.t6_2.b1;
select * from TS.t6_1,TS.t6_2 where TS.t6_1.a1=TS.t6_2.b1 and TS.t6_2.b3='2016-03-14';

建表,并在某一列上建立全文索引
create table TS.t7(a1 int,a2 varchar(50),a3 date);
create context index t7_inx on TS.t7(a2) lexer chinese_lexer;
以上索引均成功创建。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值