PostgreSQL 8 0 2 應用報告

2021-08-24 21:56:55 字數 2719 閱讀 4684

概述

postgresql 8.0.2 已經正式發布,該版本被官方建議廣泛使用,從8.0開始增加了對 windows2k/xp 平台的直接支援,並隨安裝包附帶了 pgadmin iii 圖形介面的資料庫管理工具(開源),您可以通過該圖形管理介面建立數和操作據庫、表空間、模式(schema)等各種資料庫物件。注:在本文中所引述的 postgresql 均是指 8.0.2 for windows 的版本。

安裝使用

安裝完成後,預設已經啟動了 postgresql 的服務,您只需從「開始」-「程式」-「postgresql 8.0」選單中執行「pgadmin iii」即可使用圖形化管理介面進行各種資料庫操作了。

開發一、對中文的支援

再建立資料庫時,建議指定編碼方式為:unicode(utf-8),在客戶端連線字串中顯式指定 encoding=unicode,否則可能出現讀寫多位元組字元時出現亂碼。

二、大小寫的問題

由於 postgresql 是大小寫敏感的,並預設對sql語句中的資料庫物件名稱轉換為小寫,因此如果你在建立資料庫物件時指定了大小寫混和的物件名稱,那麼在通過sql語句訪問這些物件時,必須使用雙引號(")將資料庫物件括起來,以提示 postgresql 不用幫你轉換物件名為小寫,否則將激發「***xx物件不存在」的異常,譬如您的資料庫中有名為 tuser 的表,您在 postgresql 自帶的圖形化查詢工具中必須使用類似這樣的查詢語句才能正確執行:select * from "tuser",當然它對 sql 標準中的保留字和關鍵字是不區分大小寫的,所以寫成 select * from "tuser" 這樣也是完全可以的。

另外,postgresql 對資料也是大小寫敏感的,這點與 sqlserver 不同(sqlserver 預設是不敏感的),譬如在 tuser 表中有字段 name,其中有一行 name 字段值為「tony tang」的記錄,如果直接使用

select * from "tuser" where "name" like '%tony%';

是查詢不到這條記錄的,不過你可以這麼寫:

select * from "tuser" where upper("name") like '%tony%';

呵呵,是不是覺得這樣不太好看,而且擔心效能會受影響?幸好 postgresql 提供了關鍵字 ilike 來幫我們解決這個問題,這真是個非常有趣的關鍵字(i like),對於第一種寫法只需要將 like 替換成 ilike 就可以了。

最後,建議在編寫 sql 指令碼的時候,使用單引號做字串常量的標識,雖然在 ms sqlserver 中雙引號和單引號均可作為字串常量的識別符號,但是在 postgresql 中對此就有嚴格的功能區分(不能用雙引號作為字串常量的識別符號),為了保險起見,建議對所有的資料庫物件名均使用雙引號(")將其顯式約定,以保證大小寫的嚴格匹配。

在 .net 中通過 ado.net 來訪問 postgresql 資料庫簡直就是一種享受,尤其是那些習慣使用了 ms-sql server 的開發者,因為無論編寫 postgresql 的函式(儲存過程)還是呼叫這些函式都和 sqlserver 大致一樣,尤其是對返回資料集的編碼方式與 sqlserver 完全一樣,根本沒有像訪問 oracle 儲存過程返回的資料集要使用引用游標那樣麻煩,所以在這方面對這兩種資料庫訪問**的移植是非常容易的!

其他通過『任務管理器』可以看到啟動了多個「postgres.exe」程序,請勿須驚慌,其中至少有四個是屬於 postgresql 系統服務的程序,目前 windows 版本的 postgresql 由於**移植方面的問題,在多使用者連線時也會對應的建立多個該程序,不過我個人認為該特性或許會在後續的版本中改進(畢竟 for windows 版本才剛發布),如果你打算現在就在商業產品中應用該資料庫,個人建議您使用 linux/unix 的版本。

預設情況下,您只能使用 127.0.0.1 來作為連線伺服器的位址,如果想要從其他機器連線,必須修改 postgresql 伺服器上的 pg_hba.conf 和 postgresql.conf 這兩個配置檔案中的內容,其位於 $postgressql$/8.0/data 中。

用記事本開啟 postgresql.conf 檔案後,將 listen_addresses 配置項釋放出來改為:listen_addresses = '*'

用記事本開啟 pg_hba.conf 檔案後,在 # ipv4 local connections 下新增如下行:

host all all 192.168.0.0/24 md5

這表示 postgresql 允許 ip 位址為 192.168.0.* 的任何主機與伺服器中的所有資料庫相連。

總結postgresql 的高貴出身以及輝煌的歷史,加之它與生俱來的眾多企業資料庫的特性使得它成為開源資料庫中最具商業化可能的乙個,另外非常重要的乙個是 postgresql 眾多的開發介面非常利於開發者對它的選用。開源之風已經吹入了資料庫這塊封閉的企業應用的核心地域了,譬如《資料庫產品開源趨勢突顯 ibm甲骨文倍感壓力》,再則,企業應用也開始紛紛考慮起跨平台(譬如《erp的第三種選擇 》)了。

範例資料庫:

postgresql_demo_db.rar 檔案中包含的 createdb.sql 是建立範例程式所需的資料庫的 sql 指令碼檔案,您可以在 psql 中執行如下命令來執行之:/i createdb.sql 或者通過執行裡面的 createdb.bat 來自動建立。

資源鏈結

postgresql 官方**:

postgresql 中文**:

postgresql 中文論壇:

《為什麼選用postgresql,而不是oracle?》

PostgreSQL 8 0 2 應用報告

概述 postgresql 8.0.2 已經正式發布,該版本被官方建議廣泛使用,從8.0開始增加了對 windows2k xp 平台的直接支援,並隨安裝包附帶了 pgadmin iii 圖形介面的資料庫管理工具 開源 您可以通過該圖形管理介面建立數和操作據庫 表空間 模式 schema 等各種資料庫...

PostgreSQL 遞迴查詢應用場景

今天在罈子裡有人提出了乙個問題,問題是這樣的 在以下指定表中 id name fatherid 1 中國 0 2 遼寧 1 3 山東 1 4 瀋陽 2 5 大連 2 6 濟南 3 7 和平區 4 8 沈河區 4 現在給定乙個id號,想得到它完整的名字。如 當id 7時,名字是 中國遼寧瀋陽和平區 當...

基於XML開發AOP應用報錯的問題

基於xml開發aop應用 服務層介面personservice 實現personserviceimpl 攔截類myinterceptor beans.xml配置檔案 測試類springaoptest 上述配置後會丟擲org.springframework.beans.factory.beancrea...