关键字:
数据字典、人大金仓、KingbaseES
数据字典介绍
数据字典是一种用户可以访问的记录数据库和应用程序元数据的目录,KES常用的数据字典视图有:sys_class , sys_stat_indexes , sys_index , sys_attribute , sys_type , sys_constraint
数据字典
(1)sys_class
目录sys_class记录表和几乎所有具有列或者像表的东西,这包括索引、序列
、视图、物化视图、组合类型和TOAST表。
(2)sys_stat_all_indexes
sys_stat_all_indexes视图将为当前数据库中的每个索引包含一行,该行显示关于对该索引访问的统计信息。sys_stat_user_indexes和sys_stat_all_indexes视图包含相同的信息,但是被过滤得只分别显示用户和系统索引。
(3)sys_index
(4)sys_attribute
(5)sys_constraint
目录sys_constraint存储表上的检查、主键、唯一、外键和其他约束(列约束也不会被特殊对待。每一个列约束都等同于某种表约束)
(6)查询数据库下sequence
test=# select c.relname,c.relkind from sys_class c where c.relkind = 'S';
(7)获取主键信息
select sys_class.relname as sys_table ,sys_attribute.attname as colname,sys_type.typname as typname,sys_constraint.conname as sys_name
from sys_constraint
join sys_class on sys_constraint.conrelid = sys_class.oid
join sys_attribute on sys_attribute.attrelid = sys_class.oid
and sys_attribute.attnum = sys_constraint.conkey[1]
join sys_type on sys_type.oid = sys_attribute.atttypid
where sys_constraint.contype = 'p'
order by sys_class.relname;
(8)所有的数据库对象都是用oid连接在一起的
最常用的是reclass,关联数据字典的oid,使用方法如下:
test=# select oid,relname oid,relname from sys_class where oid = 'sys_class'::regclass;
test=# select 12308::regclass;
这样可以通过regclass寻找一个表的信息,就不用去关联sys_class跟sys_namespace(记录schema信息)了。同样,像regproc跟sys_proc(保存函数,存储过程的命令)关联,regoper是和sys_operator(操作符)的oid是关联的。
test=# select oid::regoper,oid::regoperator,oid,oprname from sys_operator limit 1;
test=# select oid::regproc,oid::regprocedure,oid,proname from sys_proc limit 1;