GBase 8s
运维管理
文章

【转载“GBase 8s数据库”公众号】几张表摸清 GBase 8s 数据库对象

发表于2026-09-08 17:35:55256次浏览2个评论

用 GBase 8s 做开发或运维,免不了要翻系统表查元数据,熟记几张核心系统表,关键时刻能省不少事。

一、查数据库

先连到 sysmaster ,看实例里有哪些库,以及它们的基本属性:

database sysmaster;

select name, owner,is_logging,is_buff_log from sysdatabases;
  • is_logging :日志模式。
  • is_buff_log :缓冲日志。

再看各库用的字符集和排序规则:

select * from sysdbslocale;
  • dbs_collate :数据库字符集。跨库导数或报乱码,先确认这一项。

二、查表和视图

切到目标库, systables 是最常用的系统表。

database mydb;

select tabid, tabname, tabtype
from systables
where tabid >= 1000 and tabtype = 'T';
  • 系统自带的表 tabid 一般小于 999,用户表从 1000 开始。
  • tabtype :表类型。 'T' 表示普通表。如果要查视图,把条件改成 'V' 即可。

三、查列

一张表有哪些字段,类型是什么,有两张表可以查。

SELECT a.tabid,a.tabname,b.colname,b.coltype
FROM systables a,syscolumns b
WHERE a.tabid = b.tabid AND a.tabname = 't1';

syscolumnsext 表给出可读类型名,例如 CHAR 、 INTEGER 等:

select a.tabid,a.tabname,b.colname, b.coltype, b.coltypename
from systables a,syscolumnsext b
where a.tabid = b.tabid AND a.tabname = 't1';
  • colname :列名称。
  • coltype :列类型。

四、查列默认值

看某张表哪些列上有默认值以及默认值是什么。

SELECT
    a.tabid,
    b.tabname,
    a.colno,
    c.colname,
    a.type,
    a.default
FROM sysdefaults a,systables b,syscolumns c
WHERE a.tabid = b.tabid AND a.tabid = c.tabid AND a.colno = c.colno AND b.tabname='t1';
  • type :默认值类型。
  • default :默认值。

五、查索引

看某张表建了哪些索引:

select a.tabid,a.tabname,b.tabid, b.idxname, b.idxtype
from systables a,sysindexes b
where a.tabid = b.tabid AND a.tabname = 't1';
  • idxname :索引名称。
  • idxtype :索引类型。 通常, U 表示唯一索引, D 表示普通 B-Tree 索引。 分析慢 SQL 或者看执行计划前,先确认索引是否存在、类型是否匹配。

六、查触发器

触发器信息在 systriggers 里:

select trigname,tabid,event,old,new from systriggers;
  • trigname :触发器名。
  • tabid :挂在哪张表上。
  • event : I / U / D 分别代表插入/更新/删除。
  • old / new :行级触发器里新旧行的引用别名。

七、查存储过程和函数

过程和函数存在 sysprocedures 里,可按名字前缀模糊查。

select procname, procid,isproc,paramtypes
from sysprocedures
where procname like 'up_%';

isproc 字段可区分是存储过程还是函数。

  • isproc = t :存储过程。
  • isproc = f :函数。

八、查同义词

想要查看同义词及同义词的指向,则需要关联 syssyntable 和 systables 两张系统表进行联合检索。

select a.tabid, a.btabid,
       b.tabname as syn_name,
       c.tabname as tab_name
from (select * from syssyntable where tabname is null) a
inner join systables b on a.tabid = b.tabid
inner join systables c on a.btabid = c.tabid;
  • syn_name :同义词名称。
  • tab_name :同义词指向的实际表名。

九、查约束

约束统一由 sysconstraints 管理,根据 constrtype 字段区分类型。

-- 约束类型对照:
-- P = 主键
-- R = 外键
-- U = 唯一约束
-- N = 非空约束
-- C = Check 约束
select * from sysconstraints where constrtype = 'P';

Check 约束的表达式文本信息需要关联系统表 syschecks 获取。

select
    a.constrid,
    a.constrname,
    a.tabid,
    a.constrtype,
    b.seqno,
    b.checktext
from sysconstraints a
inner join syschecks b on a.constrid = b.constrid
where a.constrtype = 'C' and b.type='T'
order by a.constrid, b.seqno;

十、速查表

查什么 查哪张表
数据库列表 sysdatabases
字符集 sysdbslocale
用户表 systables
列信息 syscolumnsext
视图 systables
索引 sysindexes
触发器 systriggers
存储过程/函数 sysprocedures
同义词 syssyntable+systables
主键/外键/唯一/非空 sysconstraints
默认值 sysdefaults
Check 约束 syschecks+sysconstraints

评论

登录后才可以发表评论
用户头像
GBase用户28017发表于 1个月前
系统表很关键。
GBase用户51829发表于 1个月前
谢谢分享,很实用,已收藏