使用SQL查询查找Informix表和列详细信息
我希望获得Informix数据库表信息和列信息,例如使用SQL查询查找Informix表和列详细信息,sql,informix,Sql,Informix,我希望获得Informix数据库表信息和列信息,例如 表名 表的列名 列的数据类型 数据类型长度(例如:如果列为varchar) 柱上的约束 我可以使用此查询查找表名和列名,以获取表名: select tabname from systables 查找列名的步骤 SELECT TRIM(c.colname) AS table_dot_column FROM "informix".systables AS t, "informix".syscolumns AS c WHERE t.
- 表名
- 表的列名
- 列的数据类型
- 数据类型长度(例如:如果列为varchar)
- 柱上的约束
select tabname from systables
查找列名的步骤
SELECT TRIM(c.colname) AS table_dot_column
FROM "informix".systables AS t, "informix".syscolumns AS c
WHERE t.tabname = 'agent_status'
AND t.tabtype = 'T'
and t.tabid = c.tabid
AND t.tabid >= 100 ;
但我无法找到列上的数据类型和约束
谁能告诉我SQL查询以获取上述表的全部详细信息吗?哇!这是一个复杂的查询-最好至少处理两个,可能是三个查询;或者这就是你的想法 您可能希望在第一次查询中选择
tabid
和owner
,使用“informix.systables
而不仅仅是systables
(虽然这只在模式ANSI数据库中起作用,但确实起作用)
尽管t.tabid>=100
子句可能是多余的,但对syscolumns
的查询是可以的,除非您确实想阻止人们了解系统目录表中的列。此外,了解视图中的列也很有帮助,因此tabtype='T'
可能过于严格
对数据类型进行解码是非常困难的。对于内置类型,这不是太难;对于用户定义的类型,这是相当困难的工作。coltype
和collength
(和extended_d
)告诉您该类型。您可以在我的包中的sqltypes.ec
中找到翻译基本类型的C代码。您可以在$INFORMIXDIR/etc/xpg4_is.SQL
中找到一些简单的SQL(可能不完整)
约束信息存储在sysconstraints
和相关表格中。您可以在前面提到的SQLCMD源代码(文件sqlinfo.ec
)中找到一些约束的代码