首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SQL查询查找Informix表和列详细信息

使用SQL查询查找Informix表和列详细信息
EN

Stack Overflow用户
提问于 2011-09-06 11:11:45
回答 1查看 20.5K关注 0票数 5

我想获取Informix数据库表信息和列信息,例如

  • 表名
  • 表的列名
  • 列的数据类型
  • 数据类型长度(例如:如果列为varchar)
  • 列上的约束

我能够使用这个查询找到表名和列名,以获得表名:

代码语言:javascript
运行
复制
select tabname from systables 

查找列名

代码语言:javascript
运行
复制
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查询以获得上面提到的表的全部细节吗?

EN

回答 1

Stack Overflow用户

发布于 2011-09-09 23:04:59

哇!这是一个复杂的查询--最好至少处理两个,可能是三个查询;或者这就是您想要的。

您可能希望在第一个查询中选择tabidowner,最好使用"informix".systables而不是只使用systables (虽然这只在ANSI模式数据库中很重要,但它确实很重要)。

syscolumns的查询很好,尽管t.tabid >= 100子句可能是多余的,除非您确实希望阻止人们了解系统目录表中的列。另外,了解视图中的列可能很有帮助,因此tabtype = 'T'可能太严格了。

对数据类型进行解码是非常谨慎的。对于内置类型,这并不是太困难;对于用户定义的类型,这是相当困难的工作。coltypecollength (和extended_d)告诉您类型。您可以找到C代码来翻译我的SQLCMD包中的基本类型,即sqltypes.ec。您可以在$INFORMIXDIR/etc/xpg4_is.sql中找到一些简单的SQL (可能不是完整的)。

约束信息存储在sysconstraints和相关表中。您可以在已经提到的SQLCMD源代码(文件sqlinfo.ec)中找到一些约束的代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7318953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档