事實上之前有很長一段時間都在糾結是否有必要好好學習它,但是始終都沒有一個很好的理由說服自己。甚至是直到這個項目最終決定選用PostgreSQL時,我都沒有真正意識到學習它的價值,當時只是想反正和其它數據庫差不多,能用就行了。然而有一天晚上,自己也不知道為什么,躺在床上開始回想整個項目的實施過程,想着想着就想到了數據庫選型這一問題上了。事情是這樣的,最初客戶將他們的產品目標定位為主打中型規模,同時也要在一定程度上支持小型規模。鑒於此,我們為他們提供的方案是中型規模的數據庫選用Oracle,小型規模的選定MySQL,在經過多輪商談之后這個方案通過了。然而隨着項目的深入,客戶突然有一天提出,由於成本和市場推廣等問題,該產品的數據庫部分需要進行一定的調整,調整的結果是中型規模可以同時支持Oracle和MySQL,而小型規模則要同時支持MySQL和PostgreSQL,原因非常簡單,PostgreSQL是純免費的數據庫產品。聽到這個消息之后,我當時就非常惱火,因為當初為了保證運行時效率(國標),我們的數據庫訪問層是完全基於數據庫供應商提供的原始C接口開發的,甚至都沒有考慮ODBC提供的原始C接口,以防在轉換中失去效率,或是ODBC本身為了強調通用性而不得不犧牲某些數據庫的優化特征,如批量插入、批量讀取等。最后的結果顯而易見,客戶就是上帝,上帝的意見就是真理,這樣我們就不得不基於現有的訪問層接口又重新開發了一套支持PostgreSQL原生C接口的驅動。然而隨着對PostgreSQL的不斷學習,對它的了解也在逐步加深,后來發現它的功能還是非常強大的,特別是對GIS空間數據的支持就更加的吸引我了。於是就在腦子里為MySQL和PostgreSQL做了一個簡單的對比和分析,最后得出一個結論,相比MySQL,PostgreSQL並沒有什么剛性的缺點,但是它的純免費特征確實是MySQL無法比擬的。它完全可以成為軟件產品解決方案中非常重要的一環,特別是針對很多中低端用戶,不僅在使用中不會感到任何差異,而且還能節省一部分額外的費用,這對於產品的市場推廣是非常有幫助的。想到這里便決定起而行之,花上一段時間好好的學習和研究它,於是就有了這個系列的博客。
好了,閑淡扯的差不多了,讓我們還是言歸正傳吧!
PostgreSQL學習手冊(數據表)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/16/2290803.html
一、表的定義
二、系統字段
三、表的修改
四、權限
PostgreSQL學習手冊(模式Schema)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/18/2291526.html
PostgreSQL學習手冊(表的繼承和分區)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/18/2291814.html
一、表的繼承
二、分區表
PostgreSQL學習手冊(常用數據類型)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/19/2293602.html
一、數值類型
二、字符類型
三、日期/時間類型
四、布爾類型
五、位串類型
六、數組
七、復合類型
PostgreSQL學習手冊(函數和操作符<一>)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/19/2294071.html
一、邏輯操作符
二、比較操作符
三、數學函數和操作符
四、字符串函數和操作符
五、位串函數和操作符
PostgreSQL學習手冊(函數和操作符<二>)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/20/2294643.html
六、模式匹配
七、數據類型格式化函數
八、時間/日期函數和操作符
PostgreSQL學習手冊(函數和操作符<三>)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/20/2295273.html
九、序列操作函數
十、條件表達式
十一、數組函數和操作符
十二、系統信息函數
十三、系統管理函數
PostgreSQL學習手冊(索引)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/22/2298182.html
一、索引的類型
二、復合索引
三、組合多個索引
四、唯一索引
五、表達式索引
六、部分索引
七、檢查索引的使用
PostgreSQL學習手冊(事物隔離)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/25/2300863.html
PostgreSQL學習手冊(性能提升技巧)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/25/2301064.html
一、使用EXPLAIN
二、批量數據插入
PostgreSQL學習手冊(服務器配置)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/26/2302241.html
一、服務器進程的啟動和關閉
二、服務器配置
三、內存相關的參數配置
PostgreSQL學習手冊(角色和權限)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/26/2302639.html
一、數據庫角色
二、角色屬性
三、權限
四、角色成員
PostgreSQL學習手冊(數據庫管理)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/27/2303510.html
一、概述
二、創建數據庫
三、修改數據庫配置
四、刪除數據庫
五、表空間
PostgreSQL學習手冊(數據庫維護)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/27/2304155.html
一、恢復磁盤空間
二、更新規划器統計
三、VACUUM和ANALYZE的示例
四、定期重建索引
五、觀察磁盤使用情況
PostgreSQL學習手冊(系統表)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/28/2305415.html
一、pg_class
二、pg_attribute
三、pg_attrdef
四、pg_authid
五、pg_auth_members
六、pg_constraint
七、pg_tablespace
八、pg_namespace
九、pg_database
十、pg_index
PostgreSQL學習手冊(系統視圖)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/29/2306115.html
一、pg_tables
二、pg_indexes
三、pg_views
四、pg_user
五、pg_roles
六、pg_rules
七、pg_settings
PostgreSQL學習手冊(客戶端命令<一>)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/29/2306493.html
零、口令文件
一、createdb
二、dropdb
三、reindexdb
四、vacuumdb
五、createuser
六、dropuser
PostgreSQL學習手冊(客戶端命令<二>)
http://www.cnblogs.com/stephen-liu74/archive/2011/12/30/2307813.html
七、pg_dump
八、pg_restore
九、psql
PostgreSQL學習手冊(SQL語言函數)
http://www.cnblogs.com/stephen-liu74/archive/2012/01/04/2312194.html
一、基本概念
二、基本類型
三、復合類型
四、帶輸出參數的函數
五、返回結果作為表數據源
六、返回集合的SQL函數
七、多態的SQL函數
八、函數重載
PostgreSQL學習手冊(PL/pgSQL過程語言)
http://www.cnblogs.com/stephen-liu74/archive/2012/01/05/2312759.html
一、概述
二、PL/pgSQL的結構
三、聲明
四、基本語句
五、控制結構
六、游標
七、錯誤和消息
如果您覺得這個系列的博客可以讓您有所收獲,請保持持續的關注。
如果您發現博客中有明顯的紕漏,歡迎指正。
如果您有意進行技術上的交流,可以通過郵件共同探討(stephenland74@hotmail.com)。
如果您有更好的建議或更好的實現方式,敬請賜教。
如果您已經是我的關注者,希望隨后發布的Lua系列不會讓您失望。
I am Stephen Liu.