初識DB2

          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)

          posted on 2007-07-03 10:54 心硯 閱讀(2008) 評論(0)  編輯  收藏 所屬分類: DB

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          文章分類

          文章檔案

          Forum

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南充市| 洱源县| 阿坝| 苏尼特左旗| 苍溪县| 洛隆县| 钟山县| 沧源| 宁南县| 桐庐县| 满城县| 呼图壁县| 长海县| 郎溪县| 盈江县| 志丹县| 正安县| 米脂县| 重庆市| 曲水县| 茂名市| 明溪县| 沛县| 宕昌县| 蒙阴县| 宜兴市| 蒙自县| 辉南县| 略阳县| 崇明县| 潜江市| 朔州市| 丹凤县| 武安市| 永嘉县| 荣昌县| 儋州市| 新津县| 双桥区| 梁平县| 平远县|