下面内容都是通过网上查找及实践后整理出来的 ,加入了部分个人理解,如果错误请指出

查看表结构:


db2 describe table db2inst1.eip4_info 

 db2 describe indexes for table db2inst1.eip4_info show detail


添加表字段



alter table td_storage add EXAPROJECT VARCHAR(100);


修改字段长度



db2 alter table eip_user alter column userpass set data type VARCHAR(40)


将表中一列修改为自动增长时,可用下面命令:

Alter table <table name> alter column <column name> set generated always as identity (start with 1,increment by 1)



修改表中一列自动增长的开始值时,可用下面的命令:

ALTER TABLE <talbe_name> ALTER COLUMN <column name> RESTART WITH 18;



DB2可以使用generated always as identity 将某一个字段指定为自增长的字段,


比如:


  这表示id自动是一个自增长的字段,它从1开始增加每次增加1。也可以通过generated 将字段的值通过其他字段的计算的来,比如;


查询所有用户

create table user(name varchar(30), 

   n1 integer, 

   n2 integer , 

   id integer generated always as (n1+n2)) 

   如: 

   create table strategy 

   ( 

   strategy_id decimal(17) 

   GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1 ) 

   primary key not null, 

   strategy_name varchar(200), 

   area_code decimal(6,0) 

   );


select distinct tabschema from syscat.tables





查询db2inst1用户的所有表(注意大小写)



db2 "select name,type,CREATOR from SYSIBM.systables where type='T' and CREATOR = 'DB2INST1'"



db2 "select name,type,CREATOR from SYSIBM.systables where type='T' and CREATOR = 'DB2INST1' and locate('tab',name)>0"

如果想看每一个表中的条数:



select A.name,B.rowcnt from sysibm.sysobjects A,sysibm.systabstats B WHERE A.id=B.id and A.type='U' 



 select B.rowcnt from SYSIBM.systabstats B


VALUE函数 




语法:VALUE(EXPRESSION1,EXPRESSION2) 




VALUE函数是用返回一个非空的值,当其第一个参数非空,直接返回该参数的值,如果第一个参数为空,则返回第一个参数的值。 


eg:


--表示如果T1.ID为空,则返回空串,如果T1.ID不为空,则返回T1.ID。


 

SELECT VALUE(ID,'') FROM T1




COALESCE函数 




语法:COALESCE(ARG1,ARG2...) 




COALESCE返回参数集中第一个非null参数。用法类似于VALUE函数。 






LENGTH函数 




语法:LENGTH(ARG) 




LENGTH函数返回参数的长度。 



eg:SELECT LENGTH(NAME) FROM T1

LCASE、LOWER函数 




语法:LCASE()、LOWER() 




LCASE、LOWER函数返回定长、变长字符串的小写形式。 



eg:SELECT LCASE(NAME),LOWER(NAME) FROM T1

UCASE、UPPER函数 




语法:UCASE()、UPPER() 




UCASE、UPPER函数返回定长、变长字符串的大写形式。 



eg:SELECT UCASE(NAME),UPPER(NAME) FROM T1


LTRIM、RTRIM函数 




语法:LTRIM()、RTRIM() 




LTRIM、RTRIM函数从CHAR、VARCHAR、GRAPHIC或者VARGRAPHIC中去掉左侧或右侧的空格。 



eg:SELECT LTRIM(NAME),RTRIM(NAME) FROM T1


LEFT、RIGHT函数 




语法:LEFT(ARG,LENGTH)、RIGHT(ARG,LENGTH) 




LEFT、RIGHT函数返回ARG最左边、右边的LENGTH个字符串,ARG可以是CHAR或BINARY STRING。 



eg:SELECT LEFT(NAME,2),RIGHT(NAME,2) FROM T1

CONCAT函数 




语法:CONCAT(ARG1,ARG2) 




CONCAT函数返回两个字符串的连接。 



eg:SELECT CONCAT(FIRST_NAME,LAST_NAME) FROM T1

INSERT函数 




语法:INSERT(ARG1,POS,SIZE,ARG2) 




INSERT函数返回一个字符串,将ARG1从POS处删除SIZE个字符,将ARG2插入该位置。 


eg: 




LOCATE函数 




语法:LOCATE(ARG1,ARG2,<POS>) 




LOCATE函数在ARG2中查找ARG1第一次出现的位置,如果指定POS,则从ARG2的POS处开始查找ARG1第一次出现的位置。 



eg:SELECT LOCATE('a',NAME) FROM T1


POSSTR函数 




语法:POSSTR(EXP1,EXP2) 




POSSTR函数返回EXP2在EXP1中的位置。 



eg:SELECT LOCATE(NAME,'a') FROM T1


REPEAT函数 




语法:REPEAT(ARG1,NUM_TIMES) 




REPEAT函数返回ARG1被重复NUM_TIMES次的字符串。 



eg:SELECT REPEAT(NAME,2) FROM T1


REPLACE函数 





语法:REPLACE(EXP1,EXP2,EXP3)


REPLACE函数用EXP3代替EXP1中所有的EXP2。 



eg:SELECT REPLACE('ROMANND','NND','CCB') FROM T1


SPACE函数 




语法:SPACE(SIZE) 




SPACE函数返回一个包含SIZE个空格的字符串。 

eg:SELECT SPACE(10) FROM T1



SUBSTR函数 





语法:SUBSTR(ARG1,POS,<LENGTH>)


SUBSTR函数返回ARG1中POS位置开始的LENGTH个字符,如果没有指定LENGTH,则返回剩余的字符。 


eg:SELECT SUBSTR('CDNJFDJFJD',5,2) FROM T1