informix SQL查询咨询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了informix SQL查询咨询相关的知识,希望对你有一定的参考价值。
informix SQL数据库,有几百张表,现在想知道有一特定关键词的数据在哪张表里,如何操作?
或者有没有啥命令可以一次性检索出每张表的前n笔数据,分别导到各个不同的文件里。统一查
select * from db每张表查实在吃不消
什么命令可以一次性把所有表的名字都导出来?
或许这样写批处理方便些!
另外,top等指令在INFORMIX下似乎不可用,INFORMIX是在IBM小型机AIX平台下自带的,公司的业务系统一直用这数据库,当然我也希望上SQL SERVER 2008,可是没得挑啊。
systables:描述数据库中的每张表;
syscolumns:描述数据库中表的列;
sysindexes:描述数据库中列的索引;
sysfragments:存储了分段索引的片段信息;
sysfragauth:表识别列级权限;
sysviews:描述了数据库中定义的每个视图;
sysdpend:描述了视图是如何依赖其他视图和表的;
syssyntable:定义每一个同义词及其所代表的对象;
sysconstraints:记录了加载在数据库表列上的约束;
sysreferences:列出了放置在数据库上的参照约束,它为数据库的每个参照约束建立一行
syscoldepend:记录了涉及检查约束的所有列,包括在约束中每列都会在syscoldepend表中创建一行;
sysprocedures:存放数据库中每个过程的特征;
sysprocplan:装载了过程执行所需的两项内容(执行计划或查询计划、附属列表);
sysprocauth:描述授予存储过程的权限;
systriggers:装载了关于触发器的信息;
sysblobs:确定BLOB列的存储位置;
sysroleauth:描述授予用户的角色;
sysobjstate:存储了关于数据库对象的状态信息;
sysvlolations:违例或诊断表; 参考技术A 每张表查是必须的,如果你查都不查又怎么知道里面有你想要的数据呢?
可以用一个循环去遍历数据库里的每张表,要查前几条数据可以使用:
select top 10 * from 你的表名
在master数据库里执行:select name from sysdatabases where dbid > 6可以得到所有的数据库名.
在你要操作的数据库里执行select name from sysobjects where type='U' and status > 0 order by name可以得到所有的表名,假如放在一个数据集ds中.
然后 :
for(int i = 0;i <ds.Tables[0].Rows.Count;i++ )
select top 10 * from 你的表名,也就是ds.Tables[0].Rows[i]["name"] 就可以了.
//以下你就是根据你自己的想法做你自己的事情了
以上只是一个随手写的思路,语法肯定是通不过的,希望你不会直接复制粘贴,也希望你能所问题解决了. 参考技术B select * from systables where tabid>99 and tabtype="T" 参考技术C informix 是用的 first 不用top 参考技术D 这个数据库没用过,给个思路吧。
MSSQL数据库的话,有个系统表存储这个数据库有多少个表,每个表有多少个列。找到那个系统表来查询就好了。。
informix数据库分页
需求描述
当查询结果返回大量数据情况下,比如报表查询。需要按一定条件排序提供分页呈现数据。
INFORMIX实现方案:Informix 数据库提供了非常便捷、高效的SQL。
SELECT SKIP M FIRST N FROM TABLENAME WHERE 1=1 ORDER BY COL;
SQL应用举例
原始数据
name course score
---------------------------------------
张三 语文 74
张三 数学 99
张三 物理 93
李四 物理 94
李四 语文 78
李四 数学 84
按成绩排名输出,要求每页呈现2条记录。如何利用SQL实现分页功能:
第一页:
select skip 0 first 2 * from test_rowcols where 1=1 order by score;
name course score
---------------------------------------
张三 语文 74
李四 语文 78
第二页:
select skip 2 first 2 * from test_rowcols where 1=1 order by score;
name course score
---------------------------------------
张三 物理 85
李四 物理 86
第三页:
select skip 4 first 2 * from test_rowcols where 1=1 order by score;
name course score
---------------------------------------
李四 数学 94
张三 数学 99
应用总结,从上面的SQL及数据结果输出来看,我们只需要在我们的应用程序中控制M,N即可。
说明:M 为第几页*每页记录数-每页记录数;N 为每页记录数。
以上是关于informix SQL查询咨询的主要内容,如果未能解决你的问题,请参考以下文章