达梦学习小结

本文主要记录在dm学习过程中,与mysql有差异的部分

表、索引

dm建表语法

create table student(
id int,
name vachar(16),
age int,
sex varchar(4),
cluster primary key("id")
)
create index idx_age on student("age")

除了指定主键外,不能直接在表的ddl里面建立索引

在mysql中,索引包含在表的 ddl 语句中,因此create table like语句可以复制表的结构+索引信息,但是没办法拷贝出数据;

在dm中:
仅拷贝表结构,没有拷贝主键、约束、索引:

create table student2 as select * from STUDENT where 1=0

拷贝了表结构和数据记录,但是没有拷贝主键、约束、索引

create table student3 like student

可以通过 dbms_metadata.get_ddl() 获取表ddl及索引ddl语句
表:

select dbms_metadata.get_ddl('TABLE',table_name) from dual

索引:

select dbms_metadata.get_ddl('INDEX',index_name) from dual

在同一个schema下,不能建立同名索引

在mysql数据库中,主键索引和唯一索引的区别在于主键索引是聚簇索引,唯一索引是非聚簇索引;

在dm数据库中,严格意义上没有主键索引这一分类,可以把在建表时指定主键所建立的索引等价理解成唯一索引+非空约束,且主键索引(唯一索引)和聚簇索引没有必然联系;在没有明确指定聚簇索引的时候,dm默认采用row_id建立聚簇索引,即使用主键进行查询也有可能需要回表。

在dm数据库创建聚簇索引需要注意:

  • 每张表中只允许有一个聚集索引,默认为 row_id ,新建聚簇索引会自动删除原有聚簇索引,删除非 row_id 的聚簇索引会自动重建 row_id 聚簇索引(无其他聚簇索引的情况下,row_id聚簇索引无法再被删除)
  • 新建、删除聚集索引时,自动重建所有索引,要避免在业务高峰期或数据量大的环境操作;
  • 不支持在含有多媒体类型的表上新建聚集索引(多媒体类型包含长字符串类型、二进制等)

用户角色

创建用户前先检查密码策略

select  * from v$parameter where name='PWD_POLICY'

pwd_policy取值:

0 - 无策略
1 - 禁止与用户名相同
2 - 长度不小于9
4 - 至少包含一个大写字母
8 - 至少包含一个数字
16 - 至少包含一个标点符号

组合使用将值相加即可

alter SYSTEM set 'pwd_policy'=0;
create user dmuser identified by "";

密码要用双引号括起来,单引号不行

mysql中没有角色的概念,dm 和 oracle 中的角色可以理解成权限的集合,通过授予用户角色来实现授予用户权限,可以简化对用户权限的管理。管理员只需管理角色权限,而不是逐个管理每个用户的权限,同时可以一次性将多个权限授予一个角色,然后将该角色授予用户。这样避免了对每个用户单独授予多个权限,使权限管控更灵活,也便于审计监控。

角色-用户是多对多的关系,一个角色能被多个用户拥有,同时一个用户也可以拥有多个角色。

查看现有角色

select * from dba_roles;
create role dbauser;
grant select any table ,update any table ,delete any table,insert any table to dbauser;
grant dbauser to dmuser;

查看用户系统权限

select * from dba_sys_privs where grantee='DMUSER';

查看用户表权限

select * from dba_tab_privs where grantee='DMUSER';

查看角色被授予的用户

select * from dba_role_privs where granted_role='DBAUSER'
  • 系统权限转授
    with admin option
  • 对象权限转授
    with grant option

权限回收

revoke delete any table from dbauser 

explain 执行计划

  • NSET:用于结果集收集的操作符,一般是查询计划的顶层节点
  • PRJT:关系的"投影"运算,用于选择表达式项的计算;如查询,排序,函数索引创建等。
  • SLCT:关系的"选择" 运算,用于查询条件的过滤。
  • AAGR:简单聚集,用于没有group by的count,sum,age,max,min等聚集函数的计算。
  • FAGR:快速聚集,用于没有过滤条件时从表或 索引快速获取 MAX/MIN/COUNT值
  • BLKUP:回表
  • 索引

执行计划可能打印的索引共有4种类型

1.CSCN 全表扫描
2.SSCN 索引全扫描
3.SSEK 二级索引单值/范围扫描
4.CSEK 聚簇索引单值/范围扫描

CSCN 和 SSCN 都走全表扫描,区别在于SSCN 只包含索引数值且根据索引键进行排序,日常要用到的索引建议要达到 SSEK 级

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值