天天看點

PostgreSQL學習手冊(目錄)

原文位址:http://www.cnblogs.com/stephen-liu74/archive/2012/06/08/2315679.html

    事實上之前有很長一段時間都在糾結是否有必要好好學習它,但是始終都沒有一個很好的理由說服自己。甚至是直到這個項目最終決定選用PostgreSQL時,我都沒有真正意識到學習它的價值,當時隻是想反正和其它資料庫差不多,能用就行了。然而有一天晚上,自己也不知道為什麼,躺在床上開始回想整個項目的實施過程,想着想着就想到了資料庫選型這一問題上了。事情是這樣的,最初客戶将他們的産品目标定位為主打中型規模,同時也要在一定程度上支援小型規模。鑒于此,我們為他們提供的方案是中型規模的資料庫選用Oracle,小型規模的標明MySQL,在經過多輪商談之後這個方案通過了。然而随着項目的深入,客戶突然有一天提出,由于成本和市場推廣等問題,該産品的資料庫部分需要進行一定的調整,調整的結果是中型規模可以同時支援Oracle和MySQL,而小型規模則要同時支援MySQL和PostgreSQL,原因非常簡單,PostgreSQL是純免費的資料庫産品。聽到這個消息之後,我當時就非常惱火,因為當初為了保證運作時效率(國标),我們的資料庫通路層是完全基于資料庫供應商提供的原始C接口開發的,甚至都沒有考慮ODBC提供的原始C接口,以防在轉換中失去效率,或是ODBC本身為了強調通用性而不得不犧牲某些資料庫的優化特征,如批量插入、批量讀取等。最後的結果顯而易見,客戶就是上帝,上帝的意見就是真理,這樣我們就不得不基于現有的通路層接口又重新開發了一套支援PostgreSQL原生C接口的驅動。然而随着對PostgreSQL的不斷學習,對它的了解也在逐漸加深,後來發現它的功能還是非常強大的,特别是對GIS空間資料的支援就更加的吸引我了。于是就在腦子裡為MySQL和PostgreSQL做了一個簡單的對比和分析,最後得出一個結論,相比MySQL,PostgreSQL并沒有什麼剛性的缺點,但是它的純免費特征确實是MySQL無法比拟的。它完全可以成為軟體産品解決方案中非常重要的一環,特别是針對很多中低端使用者,不僅在使用中不會感到任何差異,而且還能節省一部分額外的費用,這對于産品的市場推廣是非常有幫助的。想到這裡便決定起而行之,花上一段時間好好的學習和研究它,于是就有了這個系列的部落格。

    好了,閑淡扯的差不多了,讓我們還是言歸正傳吧!

PostgreSQL學習手冊(資料表)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/16/2290803.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/16/2290803.html</a>

一、表的定義

二、系統字段

三、表的修改

四、權限

PostgreSQL學習手冊(模式Schema)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/18/2291526.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/18/2291526.html</a>

PostgreSQL學習手冊(表的繼承和分區)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/18/2291814.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/18/2291814.html</a>

一、表的繼承

二、分區表

PostgreSQL學習手冊(常用資料類型)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/19/2293602.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/19/2293602.html</a>

一、數值類型

二、字元類型

三、日期/時間類型

四、布爾類型

五、位串類型

六、數組

七、複合類型

PostgreSQL學習手冊(函數和操作符&lt;一&gt;)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/19/2294071.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/19/2294071.html</a>

一、邏輯操作符

二、比較操作符

三、數學函數和操作符

四、字元串函數和操作符

五、位串函數和操作符

PostgreSQL學習手冊(函數和操作符&lt;二&gt;)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/20/2294643.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/20/2294643.html</a>

六、模式比對

七、資料類型格式化函數

八、時間/日期函數和操作符

PostgreSQL學習手冊(函數和操作符&lt;三&gt;)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/20/2295273.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/20/2295273.html</a>

九、序列操作函數

十、條件表達式

十一、數組函數和操作符

十二、系統資訊函數

十三、系統管理函數

PostgreSQL學習手冊(索引)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/22/2298182.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/22/2298182.html</a>

一、索引的類型

二、複合索引

三、組合多個索引

四、唯一索引

五、表達式索引

六、部分索引

七、檢查索引的使用

PostgreSQL學習手冊(事物隔離)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/25/2300863.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/25/2300863.html</a>

PostgreSQL學習手冊(性能提升技巧)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/25/2301064.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/25/2301064.html</a>

一、使用EXPLAIN

二、批量資料插入

PostgreSQL學習手冊(伺服器配置)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/26/2302241.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/26/2302241.html</a>

一、伺服器程序的啟動和關閉

二、伺服器配置

三、記憶體相關的參數配置

PostgreSQL學習手冊(角色和權限)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/26/2302639.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/26/2302639.html</a>

一、資料庫角色

二、角色屬性

三、權限

四、角色成員

PostgreSQL學習手冊(資料庫管理)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/27/2303510.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/27/2303510.html</a>

一、概述

二、建立資料庫

三、修改資料庫配置

四、删除資料庫

五、表空間

PostgreSQL學習手冊(資料庫維護)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/27/2304155.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/27/2304155.html</a>

一、恢複磁盤空間

二、更新規劃器統計

三、VACUUM和ANALYZE的示例

四、定期重建索引

五、觀察磁盤使用情況

PostgreSQL學習手冊(系統表)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/28/2305415.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/28/2305415.html</a>

一、pg_class

二、pg_attribute

三、pg_attrdef

四、pg_authid

五、pg_auth_members

六、pg_constraint

七、pg_tablespace

八、pg_namespace

九、pg_database

十、pg_index

PostgreSQL學習手冊(系統視圖)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/29/2306115.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/29/2306115.html</a>

一、pg_tables

二、pg_indexes

三、pg_views

四、pg_user

五、pg_roles

六、pg_rules

七、pg_settings

PostgreSQL學習手冊(用戶端指令&lt;一&gt;)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/29/2306493.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/29/2306493.html</a>

零、密碼檔案

一、createdb

二、dropdb

三、reindexdb

四、vacuumdb

五、createuser

六、dropuser

PostgreSQL學習手冊(用戶端指令&lt;二&gt;)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2011/12/30/2307813.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2011/12/30/2307813.html</a>

七、pg_dump

八、pg_restore

九、psql

PostgreSQL學習手冊(SQL語言函數)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2012/01/04/2312194.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2012/01/04/2312194.html</a>

一、基本概念

二、基本類型

三、複合類型

四、帶輸出參數的函數

五、傳回結果作為表資料源

六、傳回集合的SQL函數

七、多态的SQL函數

八、函數重載

PostgreSQL學習手冊(PL/pgSQL過程語言)

<a href="http://www.cnblogs.com/stephen-liu74/archive/2012/01/05/2312759.html" target="_blank">http://www.cnblogs.com/stephen-liu74/archive/2012/01/05/2312759.html</a>

二、PL/pgSQL的結構

三、聲明

四、基本語句

五、控制結構

六、遊标

七、錯誤和消息

如果您覺得這個系列的部落格可以讓您有所收獲,請保持持續的關注。

如果您發現部落格中有明顯的纰漏,歡迎指正。

如果您有意進行技術上的交流,可以通過郵件共同探讨([email protected])。

如果您有更好的建議或更好的實作方式,敬請賜教。

如果您已經是我的關注者,希望随後釋出的Lua系列不會讓您失望。

I am Stephen Liu.