Informix SQL – 列出所有字段和表

Informix isql一个命令“info tables;”显示所有表.
用于查看字段及其各自数据类型的语法是“表的信息列”;

是否有类似的命令显示所有表和所有字段的table.field?

解决方法

使用首选JOIN符号:
SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
  FROM "informix".systables  AS t
  JOIN "informix".syscolumns AS c ON t.tabid = c.tabid
 WHERE t.tabtype = 'T'
   AND t.tabid >= 100
 ORDER BY t.tabname,c.colno;

或者老式的join-in-where-clause符号:

SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
  FROM "informix".systables AS t,"informix".syscolumns AS c
 WHERE t.tabid = c.tabid
   AND t.tabtype = 'T'
   AND t.tabid >= 100
 ORDER BY t.tabname,c.colno;

假设您正在使用最新版本的IDS,则可以按列表中未列出的列进行排序.如果您收到投诉,请将订购列添加到选择列表.

加入标准是明显的; tabtype =’T’仅列出表中列出的视图,同义词和其他类似项目; tabid> = 100只列出了数据库中明确创建的表,而不是系统目录.

这不包括类型信息 – 如果你想要,你必须做更多的工作.您将找到一个文件$INFORMIXDIR / etc / xpg4_is.sql,其中包含旧版本的XPG4(X / Open标准)信息模式(因此是文件名)的粗略近似值.在那里,还有功能等来将类型信息从syscolumns.coltype和syscolumns.collength解码为可识别的字符串.但是,我强烈怀疑它不处理disTINCT类型,也不处理其他用户定义的类型.我很高兴被证明是错误的,但是…如果您将该文件的相关部分添加数据库中,那么您也可以获取类型信息.

另请注意,Isql和DB-Access中的所有INFO命令都在前端进行仿真,不会在IDS服务器中执行.基本上,程序接受请求并将其转换成更复杂的sql语句.请参阅sqlCMD(可从IIUG Software Archive获取)的一部分sqlinfo.ec文件中的代码,了解我的sqlCMD程序如何处理INFO语句. (注意:sqlCMD的INFO输出格式与Isql和DB-Access的INFO输出格式不同.)

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...