达梦数据库模式对象管理

模式定义: 模式是一个特定的对象集合, 在概念上可将其看作是包含表、 视图、 索引等若干对象的对象集。 模式对象: 表、 视图、 约束、 索引、 序列、 触发器、 存储过程/函数、包、 同义词、 类、 域。 模式与用户之间的关系:当系统建立一个用户时, 会自动生成一个对应同名的模式用户还可以建立其他模式(一个用户可以对多个模式)

1 表的管理

1.1 达梦支持的表:

默认的表是索引组织表, 支持堆表, 临时表, 分区表, 外部表等

1.1.1 规划表:

1、 命名: 字母开头, a-z,0-9,$#_ 2、 数据类型: int char varchar date clob blob number 等 3、 存储位置: 自已规划的表空间, 如果没有指定表空间, 则会存到 main 表空间中。 4、 约束(5 大约束) 非空约束, 唯一约束, 主键, 外键, 检查约束 5、 注释: comment。 遵循 3 范式。

案例: 规划一张学员信息表 表名: STU 学号: ID char(10) 姓名: sname varchar(20) not null 性别: sex char(1) 年龄: age int 电话: tel varchar(15) not null 家庭住址: address varchar(50) 表空间: STU 约束: 主键列----学号, 非空----姓名和电话

备注: studentinfo

create table "TEST"."STU"
(
"ID" CHAR(10) not null ,
"SNAME" VARCHAR(20) not null ,
"SEX" CHAR(1),
"AGE" INT,
"TEL" VARCHAR(15) not null ,
"ADDRESS" VARCHAR(50),
primary key("ID")
) 
​
storage(initial 1, next 1, minextents 1, fillfactor 0, on "STU") ;
​
comment on table "TEST"."STU" is 'STUDENTINFO'; 

导入数据到表中 1、 insert into 表名(列名) values();

Insert into "TEST"."STU"(ID,SNAME,SEX,AGE,TEL,ADDRESS) values(1,'zhangsan','男',18,'130000000000','北京'); 

2、通过脚本把数据导入到表中。

  

1.1.2 维护表:

create table test.t5(id int); 
insert into test.t5 values(1);
insert into test.t5 values(2);
insert into test.t5 values(3)
insert into test.t5 values(4);
insert into test.t5 values(5);
insert into test.t5 values(6);
insert into test.t5 values(7);
insert into test.t5 values(8);

增加列:

ALTER TABLE TEST.T5 ADD COLUMN(C1 NUMBER(3,1));

删除列:

Alter table test.t5 drop column C1;

创建约束 1、 非空约束

Create table test.t6(id int);
Alter table test.t6 modify id int not null;

2、 唯一约束

Create table test.t7(id int ,name varchar(20) unique);
insert into test.t7 values(1,'sssss');
insert into test.t7 values(2,null);
insert into test.t7 values(3,'');
insert into test.t7 values(4,null);
insert into test.t7 values(5,'');
insert into test.t7 values(6,null);
commit;

唯一约束, 遇到 null 会忽略, 可以录入多个 null 值, 但“” , 只能录入一个。 3、 主键约束

create table test.t8(id int PRIMARY key, name varchar(20));
create table test.t9(id int ,name varchar(20));
alter table test.t9 add constraint t9_pri PRIMARY key(id);

4、 检查约束

create table test.t10(id int CHECK(id>=5));
insert into test.t10 values(4);
insert into test.t10 values(5);

5、 外键约束 一个表的外键, 一定是另一张表的主键, 用来保证数据的一致性。

create table test.t11(sid int PRIMARY key ,pid int);
create table test.t12(id int primary key,sid int FOREIGN key REFERENCES test.t11(sid));
alter table "TEST"."T8" add constraint "T8_FK" foreign key("ID") references "TEST"."STU"("ID");

6、 对列加备注

Comment on column test.t11.sid is ‘编号’ ;  

查看约束和注释

select constraint_name, constraint_type,table_name from dba_constraints where
TABLE_NAME='T12'; 

启用和禁用约束

Alter table test.t12 disable constraint cons134218853
Alter table test.t12 enable constraint cons134218853

删除约束:

alter table DMHR.TEST drop constraint TEST_UNI;

删除表

Drop table test.t1; 

2 视图

从用户角度来看, 一个视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看, 一个视图是由 SELECT 语句组成的查询定义的虚拟表。

视图的分类: 简单视图、 复杂视图、 物化视图。 1、 简单视图: 对单表做查询

Create or replace view () as select () from () where (); 
​
create view test.v1 as select employee_id,employee_name,department_id,job_id from dmhr.employee; 

2、 复杂视图, 关联两张表以上的或是包含集函数的 sql.

create view test.v5 as select d.department_name, a.av1 from (select department_id, avg(salary) as av1 from dmhr.employee e group by department_id having avg(salary)>10000) a join dmhr.department d on a.department_id=d.department_id; 

3、 物化视图 简单视图和复杂视图是不占存储空间的, 是虚拟表, 物化视图是占存储空间的。 简单视图可以做增加, 删除, 修改。

删除视图

Drop view test.v5; 

3 索引

索引: 一种数据库对象, 通过指针加速查询速度, 通过快速定位数据的方法, 减少磁盘 I/O, 索引与表相互独立, 服务器自动使用和维护索引。 索引占空间。

达梦支持的索引: 二级索引, 位图索引, 唯一索引, 复合索引, 函数索引, 分区索引等。

3.1 创建索引的规则:

什么情况下适合建索引 1、 经常查询的列 2、 连接条件列 3、 谓词经常出现的列(where) 4、 查询是返回值的一小部分数据。 不适合建索引的情况 1、 列上有大量 null 2、 列上的数据种类有限的(性别) 。 创建索引: 1、 规划索引表空间, 表的数据是无序的, 索引的数据是有序的。

创建索引表空间:

create tablespace INDEX1 DATAFILE '/home/dmdba/dmdata/DAMENG/index1_01.dbf' size 32; 

创建索引:

create table test.emp as select * from dmhr.employee; 

维护索引: 重建:

Alter index test.ind_emp rebuild;
Alter index test.ind_emp rebulid online; 

创建索引, 删除索引, 重建索引, 收集统计信息这类操作, 不要在业务高峰去做, 在业务低谷的时候去操作。

删除索引:

Drop index test.ind_emp; 

更多资讯请上达梦技术社区了解: https://eco.dameng.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值