<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 108,comments - 56,trackbacks - 0

    首先聲明,我使用的是Informix7.x版本,

    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、建立存儲過程:

    1)文件命名為zeng.sql
       
    drop procedure zeng;
       
    create procedure zeng(deptstr varchar(20),time1 char(10),time2 char(10))
       returning 
    decimal(14,2);
       define mysum 
    decimal(14,2);
       
    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 ; 
       
    select nvl(sum(sendsum),0into mysum from mytemp where ownid=masterid;
       
    return mysum WITH  RESUME;
       
    end procedure
    2)導入到數據庫:
       dbaccess databasename zengchao.sql
    3)進入數據庫,執行
       dbaccess databasename
        ……
       
    execute procedure zeng ('00xm010101','2006-03-01','2006-03-25');


    10、update的一種用法

      update distribute set (masterid,mastername)=
    ((
    select nvl(groupmanager,0),nvl(groupmanagername,''from department where distribute.deptno=department.departmentno ))
    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):

    優化使系統表的信息與實際一致,使搜索樹的路徑最優。同時,整理索引樹。例: 
    1update statistics for table 
    2update statistics for procedure 
    3update statistics for table rta1(bm_cert)
    4update 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與[]

       select count(*from employee where departmentno like '00xm01%';
       
    select count(*from employee where departmentno[1,6]='00xm01';
       這兩條語句,執行差不多,但是估計成本是第二個比第一個好


    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 -| grep owner 找到用戶會話session號;
    4、onmode -z sesid 殺掉該session;
    5、如果第4步失敗,則進一步onstat -g ses | grep sesid 找到該發起該會話的pid;
    6kill 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
      
       上面的czzymis修改為online_web
      
       2)配置Odbc-Administrator
       a)新建一用戶DNS
       
       b)配置DNS
       
       c)高級屬性
      

    23、系統表(syscolumns)中字段類型(coltype)字段的含義
       coltype定義在informix/incl/esql/sqltypes.h文件中,如下圖
         
        注意:如果,某字段要求非空,則在原類型上加256。例如,SERIAL對應的是6,SERIAL not NULL類型對應的是(6+256)=262。

    24、常用函數(來自網絡)

    聚集函數:
    avg,求平均值
    count,統計記錄的條數
    max,求最大值
    min,求最小值
    range,計算所選行的最大值與最小值的差
    stdev,計算所選行的標準偏差
    sum,求和函數
    variance,函數返回值樣本的方差做為所有選擇行的方差的無偏估計。公式,(
    sum(xi**2)-sum(xi)**2)/N)/(N-1),其中xi是列中的每個值,N是列中值的總和。

    時間函數:
    day,mdy,month,weekday,year 這些函數返回與用來調用函數的表達式或自身變量的值。Current返回當前的日期和時間值,可以用extend函數來調整date或datetime值的精度。使用day和current 函數來將列值與當前日期進行比較。
    date函數將字符串函數轉換為DATE值。例date(‘
    12/7/04’)
    to_char函數將datetime和date值轉化為字符值。
    to_date函數將字符值轉化為datetime類型的值。例to_date(“
    1978-10-07 10:00” ,”%Y-%m-%%H:%M)

    基數函數:
    cardinality(僅適用IDS)函數對集合包含的元素數目計數。

    智能大對象函數(僅適用與IDS):
    filetoblob( ),將文件復制到BLOB列中
    filetoclob( ),將文件復制到CLOB列中
    locopy( ),將BLOB或CLOB類型的數據復制到另一個BLOB或CLOB列中
    lotofile( ),將BLOB或CLOB復制到文件中

    字符串處理函數:
    lower,將字符串中每個大寫字母轉換為小寫字母
    upper,將字符串中每個小寫字母轉換為大寫字母
    initcap,將字符串中每個詞的首寫字母轉換成大寫
    replace,將字符串中的某一組字符轉換成其他字符,例replace(col,'abc','')
    substr,返回字符串中的某一部分,例substr(col,
    1,2)
    substring,返回字符串中的某一部分,例substring(col,from 1 to 4)

    其他函數:
    hex,返回表達式的十六進制數
    round,返回表達式的四舍五入值
    trunc,返回表達式的截斷值
    length,計算表達式的長度
    user,返回執行查詢的用戶的用戶名(登陸帳戶名)
    today,返回當前系統日期
    dbservername,返回數據庫服務器的名稱,同sitename
    dbinfo,返回數據庫的相關信息
    decode,函數來將一個具有一個值的表達式轉換為另一個值
    decode(test,a,a_value,b,b_value,c,c_value……),decode函數不支持TEXT和BYTE類型。
    nvl,來將求值為空的表達式轉化為另一個想要指定的值。


    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
    posted on 2007-09-05 15:29 破繭而出 閱讀(1767) 評論(0)  編輯  收藏 所屬分類: 數據庫

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲无线电影官网| 免费一区二区无码东京热| 久久精品a亚洲国产v高清不卡| 国产成人免费手机在线观看视频| 18禁黄网站禁片免费观看不卡| 一道本在线免费视频| 亚洲乱理伦片在线观看中字| 亚洲精品在线网站| 亚洲AV无码乱码在线观看裸奔| 亚洲精品无码你懂的网站| 嫩草视频在线免费观看| 一级毛片在线免费看| 中文字幕成人免费高清在线 | 精品国产麻豆免费人成网站| 老司机免费午夜精品视频| 亚洲色成人WWW永久在线观看| 亚洲精品资源在线| 亚洲综合一区二区国产精品| 国产亚洲av片在线观看16女人 | 免费播放国产性色生活片| 亚洲精品无码av片| 亚洲av无码久久忘忧草| 亚洲国产精品网站久久| 老色鬼久久亚洲AV综合| 亚洲∧v久久久无码精品| 亚洲va国产va天堂va久久| 精品国产综合成人亚洲区| 国产A在亚洲线播放| 亚洲精品你懂的在线观看| 亚洲午夜国产精品无码| 亚洲乱码一区二区三区在线观看 | 亚洲成a人片在线看| 亚洲国产成人资源在线软件| 久久久亚洲裙底偷窥综合| 亚洲精品日韩专区silk| 亚洲福利视频一区二区三区| 亚洲国产综合在线| 精品国产日韩久久亚洲| MM1313亚洲精品无码久久| 野花视频在线官网免费1| 成人免费网站久久久|