前言 xi
第1章 基礎知識 1
1.1 如何獲得PostgreSQL 1
1.2 管理工具 1
1.2.1 psql 2
1.2.2 pgAdmin 2
1.2.3 phpPgAdmin 3
1.2.4 Adminer 3
1.3 PostgreSQL數據庫對象 4
1.4 最新版本的PostgreSQL中引入的新特性 9
1.4.1 為什麼要升級 10
1.4.2 PostgreSQL 9.4版中引入的新特性 10
1.4.3 PostgreSQL 9.3版新特性列錶 12
1.4.4 PostgreSQL 9.2版新特性列錶 13
1.4.5 PostgreSQL 9.1版新特性列錶 14
1.5 數據庫驅動程序 14
1.6 如何獲得幫助 15
1.7 PostgreSQL的主要衍生版本 15
第2章 數據庫管理 17
2.1 配置文件 17
2.1.1 postgresql.conf 18
2.1.2 pg_hba.conf 21
2.1.3 配置文件的重新加載 23
2.2 連接管理 24
2.3 角色 25
2.3.1 創建可登錄角色 26
2.3.2 創建組角色 26
2.4 創建database 28
2.4.1 模闆數據庫 28
2.4.2 schema的使用 29
2.5 權限管理 31
2.5.1 權限的類型 31
2.5.2 入門介紹 31
2.5.3 GRANT 32
2.5.4 默認權限 33
2.5.5 PostgreSQL權限體係中一些與眾不同的特點 34
2.6 擴展包機製 34
2.6.1 擴展包的安裝 36
2.6.2 通用擴展包 38
2.7 備份與恢復 40
2.7.1 使用pg_dump進行有選擇性的備份 41
2.7.2 使用pg_dumpall進行全庫備份 42
2.7.3 數據恢復 43
2.8 基於錶空間機製進行存儲管理 45
2.8.1 錶空間的創建 45
2.8.2 在錶空間之間遷移對象 45
2.9 禁止的行為 46
2.9.1 切記不要刪除PostgreSQL係統文件 46
2.9.2 不要把操作係統管理員權限授予PostgreSQL的係統賬號(postgres) 47
2.9.3 不要把shared_buffers緩存區設置得過大 47
2.9.4 不要將PostgreSQL服務器的偵聽端口設為一個已被其他程序占用的端口 47
第3章 psql工具 49
3.1 環境變量 49
3.2 psql的兩種操作模式:交互模式與非交互模式 50
3.3 定製psql操作環境 51
3.3.1 自定義psql界麵提示符 52
3.3.2 語句執行時間統計 53
3.3.3 事務自動提交 53
3.3.4 命令彆名 54
3.3.5 取齣前麵執行過的命令行 54
3.4 psql使用技巧 55
3.4.1 執行shell命令 55
3.4.2 用watch命令重復執行語句 55
3.4.3 顯示對象信息 55
3.5 使用psql實現數據的導入和導齣 56
3.5.1 使用psql進行數據導入 56
3.5.2 使用psql進行數據導齣 58
3.5.3 從外部程序復製數據以及將數據復製到外部程序 58
3.6 使用psql製作簡單的報錶 58
第4章 pgAdmin的使用 61
4.1 pgAdmin入門 61
4.1.1 功能概覽 61
4.1.2 如何連接到PostgreSQL服務器 63
4.1.3 pgAdmin界麵導航 63
4.2 pgAdmin功能特性介紹 64
4.2.1 在pgAdmin中調用psql 65
4.2.2 在pgAdmin中編輯postgresql.conf和pg_hba.conf文件 65
4.2.3 創建數據庫資産並設置權限 66
4.2.4 數據導入和導齣 68
4.2.5 備份與恢復 69
4.3 pgScript腳本機製 72
4.4 以圖形化方式解釋執行計劃 75
4.5 使用pgAgent執行定時任務 75
4.5.1 安裝pgAgent 76
4.5.2 規劃定時任務 76
4.5.3 一些有用的pgAgent相關查詢語句 78
第5章 數據類型 80
5.1 數值類型 80
5.1.1 serial類型 81
5.1.2 生成數組序列的函數 81
5.2 字符和字符串 82
5.2.1 字符串函數 83
5.2.2 將字符串拆分為數組、錶或者子字符串 83
5.2.3 正則錶達式和模式匹配 84
5.3 時間類型 85
5.3.1 時區詳解 87
5.3.2 日期時間類型的運算符和函數 89
5.4 數組類型 91
5.4.1 數組構造函數 92
5.4.2 引用數組中的元素 93
5.4.3 數組的拆分與連接 93
5.4.4 將數組元素展開為記錄行 93
5.5 區間類型 94
5.5.1 離散區間和連續區間 95
5.5.2 原生支持的區間類型 95
5.5.3 定義區間的方法 96
5.5.4 定義含區間類型字段的錶 97
5.5.5 適用於區間類型的運算符 97
5.6 JSON數據類型 98
5.6.1 插入JSON數據 98
5.6.2 查詢JSON數據 99
5.6.3 輸齣JSON數據 101
5.6.4 JSON類型的二進製版本:jsonb 101
5.7 XML數據類型 103
5.7.1 插入XML數據 103
5.7.2 查詢XML數據 104
5.8 自定義數據類型和復閤數據類型 105
5.8.1 所有錶都有一個對應的自定義數據類型 105
5.8.2 構建自定義數據類型 107
5.8.3 為自定義數據類型構建運算符和函數 107
第6章 錶、約束和索引 109
6.1 錶 109
6.1.1 基本的建錶操作 109
6.1.2 繼承錶 110
6.1.3 無日誌錶 110
6.1.4 TYPE OF 111
6.2 約束機製 112
6.2.1 外鍵約束 112
6.2.2 唯一性約束 113
6.2.3 check約束 113
6.2.4 排他性約束 113
6.3 索引 114
6.3.1 PostgreSQL原生支持的索引類型 115
6.3.2 運算符類 116
6.3.3 函數索引 118
6.3.4 基於部分記錄的索引 118
6.3.5 多列索引 119
第7章 PostgreSQL的特色SQL語法 121
7.1 視圖 121
7.1.1 單錶視圖 122
7.1.2 使用觸發器來更新視圖 123
7.1.3 物化視圖 125
7.2 靈活易用的PostgreSQL專有SQL語法 127
7.2.1 DISTINCT ON 127
7.2.2 LIMIT和OFFSET關鍵字 128
7.2.3 簡化的類型轉換語法 128
7.2.4 一次性插入多條記錄 128
7.2.5 使用ILIKE實現不區分大小寫的查詢 129
7.2.6 可以返迴結果集的函數 129
7.2.7 限製對繼承錶的DELETE、UPDATE、INSERT操作的影響範圍 130
7.2.8 DELETE USING語法 130
7.2.9 將修改影響到的記錄行返迴給用戶 130
7.2.10 在查詢中使用復閤數據類型 131
7.2.11 DO 132
7.3 適用於聚閤操作的FILTER子句 133
7.4 窗口函數 135
7.4.1 PARTITION BY子句 136
7.4.2 ORDER BY子句 136
7.5 CTE錶達式 138
7.5.1 基本CTE用法介紹 139
7.5.2 可寫CTE用法介紹 140
7.5.3 遞歸CTE用法介紹 140
7.6 LATERAL橫嚮關聯語法 141
第8章 函數編寫 144
8.1 PostgreSQL函數功能剖析 145
8.1.1 函數功能基礎知識介紹 145
8.1.2 觸發器和觸發器函數 146
8.1.3 聚閤操作 147
8.1.4 受信與非受信語言 149
8.2 使用SQL語言來編寫函數 149
8.2.1 編寫基本的SQL函數 150
8.2.2 使用SQL語言編寫聚閤函數 151
8.3 使用PL/pgSQL語言編寫函數 153
8.3.1 編寫基礎的PL/pgSQL函數 153
8.3.2 使用PL/pgSQL編寫觸發器函數 154
8.4 使用PL/Python語言編寫函數 155
8.5 使用PL/V8、PL/CoffeeScript以及PL/LiveScript語言來編寫函數 157
8.5.1 編寫基本的函數 159
8.5.2 使用PL/V8來編寫聚閤函數 160
第9章 查詢性能調優 162
9.1 通過EXPLAIN命令查看語句執行計劃 162
9.1.1 EXPLAIN選項 162
9.1.2 運行示例以及輸齣內容解釋 163
9.1.3 圖形化展示執行計劃 166
9.2 搜集語句的執行統計信息 167
9.3 人工乾預規劃器生成執行計劃的過程 168
9.3.1 策略設置 168
9.3.2 你的索引被用到瞭嗎 169
9.3.3 錶的統計信息 170
9.3.4 磁盤頁的隨機訪問成本以及磁盤驅動器的性能 171
9.4 數據緩存機製 172
9.5 編寫更好的SQL語句 173
9.5.1 在SELECT語句中濫用子查詢 174
9.5.2 盡量避免使用SELECT *語法 176
9.5.3 善用CASE語法 177
9.5.4 使用Filter語法替代CASE語法 178
第10章 復製與外部數據 180
10.1 復製功能概覽 180
10.1.1 復製功能涉及的術語 181
10.1.2 復製機製的演進 182
10.1.3 第三方復製解決方案 182
10.2 復製環境的搭建 183
10.2.1 主服務器的配置 183
10.2.2 從屬服務器的配置 184
10.2.3 啓動復製進程 185
10.3 外部數據封裝器 186
10.3.1 查詢平麵文件 186
10.3.2 以不規則數組的形式查詢不規範的平麵文件 187
10.3.3 查詢其他PostgreSQL服務實例上的數據 188
10.3.4 查詢非傳統數據源 190
附錄A PostgreSQL的安裝 192
附錄B PostgreSQL自帶的命令行工具 196
作者簡介 204
封麵介紹 204
· · · · · · (
收起)