GBase 8s
运维管理
文章
【转载“GBase 8s数据库”公众号】几张表摸清 GBase 8s 数据库对象
发表于2026-09-08 17:35:55176次浏览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个月前
谢谢分享,很实用,已收藏
热门帖子
- 12025-12-01浏览数:183647
- 22023-05-09浏览数:26339
- 42023-09-25浏览数:20004
- 52020-05-11浏览数:18715