inofrmix笔记

1、不等于 :<>

2、判断是否为空:is null

3、nvl函数

NVL(expr1,expr2):如果expr1是NULL,则返回expr2,否则返回expr1.返回值与expr1类型相同,除非expr1是字符串类,在这种情况下将返回VARCHAR2类型.这个函数用于确保查询记录集中不包含NULL值。
NVL(expr1,expr2,expr3) :如果expr1是NULL,则返回expr2,否则返回expr3.返回值与expr2类型相同,除非expr2是字符类型,在这种情况下返回VARCHAR2类型;
NULLIF(a,b) :如果a等于b返回NULL,如果不等于返回b。


4、substr()函数
substr(str,startindex,count);其他数据库一般用substring(str,startindex,count);

5、string转换成sql的date型:to_date('2006-12-25','%Y-%m-%d');

6、得到昨天的日期:today-1

7、查看sql的执行过程:

1 )登录:su - informix 2 )建立SQL文件,里面放要执行的sql语句,同时在前面加一行,set explain on;sql 语句; 3 )导入sql文件执行:isql - s databasename < filename 4 )查看执行过程:cat sqexplain.out


8、使用临时表:
into temp tablename with no log ;最好加上with no log;

9、建立存储过程:

None.gif 1 )文件命名为zeng.sql
None.gif drop procedure zeng;
None.gif create procedure zeng(deptstr varchar ( 20 ),time1 char ( 10 ),time2 char ( 10 ))
None.gif returning decimal ( 14 , 2 );
None.gif define mysum decimal ( 14 , 2 );
None.gif select a.ownid,a.masterid,c.sendsum from distribute a,order_bankbill b,bankbill c where a.orderid = b.orderid and b.bankbillid = c.id and a.deptno = deptstr and c.sendtime >= time1 and c.sendtime <= time2 into temp mytemp with no log ;
None.gif select nvl( sum (sendsum), 0 ) into mysum from mytemp where ownid = masterid;
None.gif return mysum WITH RESUME;
None.gif end procedure
None.gif 2 )导入到数据库:
None.gif dbaccess databasename zengchao.sql
None.gif 3 )进入数据库,执行
None.gif dbaccess databasename
None.gif ……
None.gif execute procedure zeng ( ' 00xm010101 ' , ' 2006-03-01 ' , ' 2006-03-25 ' );


10、update的一种用法

None.gif update distribute set (masterid,mastername) =
None.gif(( select nvl(groupmanager, 0 ),nvl(groupmanagername, '' ) from department where distribute.deptno = department.departmentno ))
None.gif where opertime >= ' 2007-02-11 ' ; // 注意后面不要漏掉一层括号


11、unique与distinct的区别:
unique是distinct的同义词,功能完全相同。distinct是标准语法,其他数据库 sql server,db2,oracle,sybase,mysql等都支持。unique,informix数据库认识,其他数据库有的认识,有的不认识。

12、Case语句用法:

select name, case when id = 9188 then ' ttt ' else name end from employee where departmentno = ' 00xm ' ;


13、使用优化器(update statistics):

None.gif 优化使系统表的信息与实际一致,使搜索树的路径最优。同时,整理索引树。例:
None.gif 1 . update statistics for table
None.gif 2 . update statistics for procedure
None.gif 3 . update statistics for table rta1(bm_cert)
None.gif 4 . update statistics high for table rta1(bm_cert) resolution 0.5


14、连接字符串(||):
select id ||':'|| name from employee

15、JDBC事务与游标
注意要先关闭ResultSet然后提交事务;

16、informix备份表数据(isql)

1 )导出:unload to "zengchao.data" select * from position;
2 )导入: load from "zengchao.data" insert into position;


17、关于like与[]

None.gif select count ( * ) from employee where departmentno like ' 00xm01% ' ;
None.gif select count ( * ) from employee where departmentno [ 1,6 ] = ' 00xm01 ' ;
None.gif 这两条语句,执行差不多,但是估计成本是第二个比第一个好


18、informix下更改表名

update systables set tabname = ' oldredeploy ' where tabname = ' redeploy ' ;


19、count(name)与count(*)区别

如果name列有null值,那么如下两条语句得到的返回值不等
select count ( * ) from tablename
select count (name) from tablename

20、锁表的解决方法(转)
1 、找到被锁表的partnum: select hex(partnum) from systables where tabname = ”tabalname”; 2 、onstat - k | grep partnum 找到该锁的owner; 3 、onstat - u | grep owner 找到用户会话session号; 4 、onmode - z sesid 杀掉该session; 5 、如果第4步失败,则进一步onstat - g ses | grep sesid 找到该发起该会话的pid; 6 、 kill pid 或 kill - 9 pid; 7 、特殊情况:在第2步中,如果发现锁的owner为0,则检查:
onstat - x
onstat - G
看是否存在全局事务,若有全局事务,则继续以下步骤: select hex(tx_addr) trans_addr,hex(tx_lklist) lock_addr from systrans where hex(tx_addr) like ' %c000000007674c58% ' ;需要说明的是,c000000007674c58是使用onstat - x 或 onstat - G得到的全局事务的地址。上面SQL语句提供出该全局事务对应的锁地址,这时如果得到的锁地址与锁表的锁地址相同的话,你就必需从应用端(通常是三层结构的中间件)发命令让该全局事务回滚或提交,否则该锁会被一直持有,直到你执行oninit - i。

21、从数据库的数据导成Excel格式

方法一: 1 )导成csv文件:isql -s databasename unload to data.csv select * from tablename; 2 )转换成Excel:用Excel中的“数据” -> “导入外部数据” -> “导入文本文件”,选择分隔符为 ' | ' ;
方法二:
用Excel中的“数据” -> “导入外部数据” -> “新建数据库查询”,然后配置数据源


22、配置Informix-CLI
1、配置Informix-Setnet32
image001.gif
上面的czzymis修改为online_web
image002.gif
2)配置Odbc-Administrator
a)新建一用户DNS
image003.gif
b)配置DNS
image004.gif
c)高级属性
image005.gif

23、系统表(syscolumns)中字段类型(coltype)字段的含义
coltype定义在informix/incl/esql/sqltypes.h文件中,如下图
coltypes.jpg
注意:如果,某字段要求非空,则在原类型上加256。例如,SERIAL对应的是6,SERIAL not NULL类型对应的是(6+256)=262。

24、常用函数(来自网络)

None.gif 聚集函数:None.gif avg ,求平均值
None.gif count ,统计记录的条数
None.gif max ,求最大值
None.gif min ,求最小值
None.gifrange,计算所选行的最大值与最小值的差
None.gif stdev ,计算所选行的标准偏差
None.gif sum ,求和函数
None.gifvariance,函数返回值样本的方差做为所有选择行的方差的无偏估计。公式,( sum (xi ** 2 ) - sum (xi) ** 2 ) / N) / (N - 1 ),其中xi是列中的每个值,N是列中值的总和。
None.gif
None.gif时间函数:None.gif day ,mdy, month ,weekday, year 这些函数返回与用来调用函数的表达式或自身变量的值。Current返回当前的日期和时间值,可以用extend函数来调整date或datetime值的精度。使用day和current 函数来将列值与当前日期进行比较。
None.gifdate函数将字符串函数转换为DATE值。例date(‘ 12 / 7 / 04 ’)
None.gifto_char函数将datetime和date值转化为字符值。
None.gifto_date函数将字符值转化为datetime类型的值。例to_date(“ 1978 - 10 - 07 10 : 00 ” ,” % Y -% m -% d % H: % M)
None.gif
None.gif基数函数:None.gifcardinality(仅适用IDS)函数对集合包含的元素数目计数。
None.gif
None.gif智能大对象函数(仅适用与IDS):None.giffiletoblob( ),将文件复制到BLOB列中
None.giffiletoclob( ),将文件复制到CLOB列中
None.giflocopy( ),将BLOB或CLOB类型的数据复制到另一个BLOB或CLOB列中
None.giflotofile( ),将BLOB或CLOB复制到文件中
None.gif
None.gif字符串处理函数:None.gif lower ,将字符串中每个大写字母转换为小写字母
None.gif upper ,将字符串中每个小写字母转换为大写字母
None.gifinitcap,将字符串中每个词的首写字母转换成大写
None.gif replace ,将字符串中的某一组字符转换成其他字符,例replace(col,'abc','')
None.gifsubstr,返回字符串中的某一部分,例substr(col, 1 , 2 )
None.gif substring ,返回字符串中的某一部分,例substring(col, from 1 to 4 )
None.gif
None.gif其他函数:None.gifhex,返回表达式的十六进制数
None.gif round ,返回表达式的四舍五入值
None.giftrunc,返回表达式的截断值
None.giflength,计算表达式的长度
None.gif user ,返回执行查询的用户的用户名(登陆帐户名)
None.giftoday,返回当前系统日期
None.gifdbservername,返回数据库服务器的名称,同sitename
None.gifdbinfo,返回数据库的相关信息
None.gifdecode,函数来将一个具有一个值的表达式转换为另一个值
None.gifdecode(test,a,a_value,b,b_value,c,c_value……),decode函数不支持TEXT和BYTE类型。
None.gifnvl,来将求值为空的表达式转化为另一个想要指定的值。


25、修改/添加表的列的属性
例如: alter table student modify studentno integer not null ;
alter table student add sex char(1) not null;


26、导出数据库的表结构
导出特定的某个表:dbschema - t tabname - d databasename tarfilename
导出整个数据的所以表:dbschema - d databasename tarfilename
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8230279/viewspace-971493/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8230279/viewspace-971493/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值