1,CLP的運行:
???直接在cmd中鍵入:db2,報錯:DB21061E? 未初始化命令行環(huán)境。
???鍵入:db2cmd,這時會打開一個CLP窗口,在這里鍵入db2后,就可以進行sql命令操作了。如:
?? db2 => connect to sample
2,表空間的創(chuàng)建:
?????在創(chuàng)建表空間,選擇“容器”,如果你選擇的容器(windows os)是一個非空的文件夾,那么將會報錯:
????????????[IBM][CLI Driver][DB2/NT] SQL0298N? 容器路徑不正確。? SQLSTATE=428B2
??? 只需將“容器”改為一個空的文件夾即可。
3,創(chuàng)建數據庫:
??????一個數據庫最少有三個表空間:用戶表、目錄表和臨時表,這些表空間可以采取讓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)