本文主要描述的是DB2數據庫和PostgreSQL在開發的實際操作中存在的異同之處的描述,對DB2與postgresql的數據定義語言、數據操作語言等進行了詳細的比對分析,供您參考:
1,數據定義語言(DDL)以及外圍工具:DB2與postgresql的區別幾乎為0,具體區別是:
a、DB2 varchar 在沒有設置特殊表空間的話,上限為32K,postgresql的varchar沒有這個限制;
b、DB2的二進制大對象類型blob,在postgresql裡用bytea類型代替;
c、DB2的文本大對象類型clob、long varchar,在postgresql裡用text類型代替;
d、DB2中generated by default 或者 generated always 類型鍵字在postgresql中用serial或者bigserial代替;(這個區別是最大的)
e、DB2中沒有序列(sequence對象),postgresql中有,因而更加靈活;
f、DB2中的自增主鍵的值重置需要alter table,而postgresql裡可以用setval()系列函數設置序列,更簡單;
g、DB2中不支持空間數據類型(點、線、面),postgresql支持;
h、DB2中事務隔離級別定義與SQL標准不夠兼容,postgresql完全兼容SQL標准;
i、DB2中JDBC type4驅動不支持GBK的數據庫編碼,postgresql沒有這個問題;
j,DB2的數據庫編碼轉換非常搞笑且復雜,postgresql很簡單,只需要 set client_encoding to xxx;
k,目前DB2 8.1還不支持UNICODE後台編碼,postgresql支持,因此可以支持多內碼;
l,DB2 8.1的觸發器無法讀取被觸發的數據表,postgresql沒有這個限制;
m,DB2 8.1 的觸發器不能執行存儲過程,postgresql沒有這個限制;
n,postgresql 中有bit(位)、bitstring(位串)類型,DB2數據庫沒有;
o,DB2的客戶端DB2/DB2cmd執行sql腳本需要指定分隔符,比如@;postgresql的客戶端缺省就是分號;
p,DB2的客戶端DB2/DB2cmd沒有命令歷史功能,postgresql的客戶端有,可以編輯歷史命令;