Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL查询查找Informix表和列详细信息_Sql_Informix - Fatal编程技术网

使用SQL查询查找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.

我希望获得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.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
)中找到一些约束的代码