1,CLP的运行:
直接在cmd中键入:db2,报错:DB21061E 未初始化命令行环境。
键入:db2cmd,这时会打开一个CLP窗口,在这里键入db2后,就可以进行sql命令操作了。如:
db2 => connect to sample
2,表空间的创建:
在创建表空间,选择“容器”,如果你选择的容器(windows os)是一个非空的文件夹,那么将会报错:
[IBM][CLI Driver][DB2/NT] SQL0298N 容器路径不正确。 SQLSTATE=428B2
只需将“容器”改为一个空的文件夹即可。
3,创建数据库:
一个数据库最少有三个表空间:用户表、目录表和临时表,这些表空间可以采取让OS来管理,也可以让DB本身来管理,这里我采用让OS来进行管理表空间,容器的建立如下:
用户表(空间)--- d:\MyDB\userTabSpace
目录表(空间)--- d:\MyDB\dirTabSpace
临时表(空间)--- d:\MyDB\tempTabSpace
4,在java中用JDBC连接DB2数据库,先用eclipse中的Database Explorer连接:
a,当Class选用DB2中E:\IBM\SQLLIB\java\db2java.zip 下的COM.ibm.db2.jdbc.app.DB2Driver时,Database Explorer可以连接上数据库;当Class选用DB2中E:\IBM\SQLLIB\java\db2jcc.jar 下的com.ibm.db2.jcc.DB2Driver时,Database Explorer连接不上数据库,报错:No license was found,需要将包db2jcc_license_cu.jar加载到classpath下。
5,在用restore命令对DB2进行数据恢复时,如果有多个备份文件与为备份数据库映像所提供的时间戳记值相匹配的话,那么将不能正常恢复,这里采用了一个比较土的方法:如130324.001,改为:130324A.001,那么将会认为这个文件与备份数据库映像所提供的时间戳记值不同,不予恢复考虑。
6,oracle中的decode()函数,看看在DB2中都被折腾成什么样子了:
语句: select id,case when id=1 then '邹清兵' when id=2 then '马明灯' else name end as 姓名,name from test;
ID 姓名 NAME
----------- ---------- ----------
1 邹清兵 zqb
2 马明灯 mmd
3 kyy kyy
3 条记录已选择。
7,DB2中db2start启动数据库,db2stop用来关闭数据库。但如果有数据库正在连接时,是不能关闭数据库的,只有先断开数据库(connect reset)连接才能再关闭数据库(db2stop);当然,也可以强行关闭数据库(db2stop force)。
8,查错方法总结:
通过SQLSTATE代码得到其错误原因,如:
db2 ? 08004,其中08004是SQLSTATE代码;当然,有时候我们得到的并不一定是SQLSTATE代码,这时可以同样通过命令: db2 ? SQL1068N,来得到其SQLSTATE代码。
9,oracle中的rownum,可以用DB2中的row_number() over()来替代,也可以用fetch first 3 rows only,如:
select * from (select row_number() over() as rownum,t.* from xxx t) where rownum < 3
(select * from xxx fetch first 20 rows only) except (select * from xxx fetch first 10 rows only)