《PostgreSQL即學即用(第3版)》是2018年11月人民郵電出版社出版的圖書,作者是[美]瑞金娜·奧貝(Regina Obe)、利奧·徐(Leo Hsu)。
基本介紹
- 中文名:PostgreSQL即學即用(第3版)
- 作者:[美]瑞金娜·奧貝(Regina Obe)、利奧·徐(Leo Hsu)
- 出版社:人民郵電出版社
- 出版時間:2018年11月
- 頁數:242 頁
- 定價:79 元
- 開本:16 開
- 裝幀:平裝
- ISBN:9787115499660
內容簡介,圖書目錄,
內容簡介
本書將幫助你理解和使用 PostgreSQL 這一開源資料庫系統。主要介紹 PostgreSQL 9.5、PostgreSQL 9.6 以及 PostgreSQL 10 的核心概念和功能特性,但也會涉及之前版本中一些獨特的高級特性。你會發現 PostgreSQL 不只是個資料庫系統,也是一個出色的套用平台。本書通過示例展示了如何實現在其他資料庫中難以或不能完成的任務。
圖書目錄
前言 xiii
第 1 章 基礎知識 1
1.1 為什麼應該選擇PostgreSQL 1
1.2 不適用PostgreSQL 的場景 3
1.3 如何獲得PostgreSQL 3
1.4 管理工具 4
1.4.1 psql 4
1.4.2 pgAdmin 4
1.4.3 phpPgAdmin 6
1.4.4 Adminer 6
1.5 PostgreSQL 資料庫對象 7
1.6 最新版本的PostgreSQL 中引入的新特性 12
1.6.1 為什麼要升級 12
1.6.2 PostgreSQL 10 中引入的新特性 12
1.6.3 PostgreSQL 9.6 中引入的新特性 13
1.6.4 PostgreSQL 9.5 中引入的新特性 14
1.6.5 PostgreSQL 9.4 中引入的新特性 15
1.7 資料庫驅動程式 17
1.8 如何獲得幫助 18
1.9 PostgreSQL 的主要衍生版本 18
第 2 章 資料庫管理 19
2.1 配置檔案 19
2.1.1 讓配置檔案生效 20
2.1.2 postgresql.conf 21
2.1.3 pg_hba.conf 25
2.2 連線管理 27
2.3 角色 29
2.3.1 創建可登錄角色 30
2.3.2 創建組角色 30
2.4 創建database 33
2.4.1 模板資料庫 33
2.4.2 schema 的使用 34
2.5 許可權管理 36
2.5.1 許可權的類型 36
2.5.2 入門介紹 36
2.5.3 GRANT 37
2.5.4 默認許可權 38
2.5.5 PostgreSQL 許可權體系中一些與眾不同的特點 39
2.6 擴展包機制 39
2.6.1 擴展包的安裝 40
2.6.2 通用擴展包 42
2.7 備份與恢復 44
2.7.1 使用pg_dump 進行有選擇性的備份 45
2.7.2 使用pg_dumpall 進行全局備份 46
2.7.3 數據恢復 47
2.8 基於表空間機制進行存儲管理 48
2.8.1 表空間的創建 49
2.8.2 在表空間之間遷移對象 49
2.9 禁止的行為 49
2.9.1 切記不要刪除PostgreSQL 系統檔案 50
2.9.2 不要把作業系統管理員許可權授予PostgreSQL 的系統賬號 50
2.9.3 不要把shared_buffers 快取區設定得過大 51
2.9.4 不要將PostgreSQL 伺服器的偵聽連線埠設為一個已被其他程式占用的連線埠 51
第3 章 psql 工具 52
3.1 環境變數 52
3.2 psql 的兩種操作模式:互動模式與非互動模式 53
3.3 定製psql 操作環境 54
3.3.1 自定義psql 界面提示符 55
3.3.2 語句執行時間統計 56
3.3.3 事務自動提交 56
3.3.4 命令別名 56
3.3.5 取出前面執行過的命令行 57
3.4 psql 使用技巧 57
3.4.1 執行shell 命令 57
3.4.2 用watch 命令重複執行語句 57
3.4.3 顯示對象信息 58
3.4.4 行轉列視圖 59
3.4.5 執行動態SQL 59
3.5 使用psql 實現數據的導入和導出 60
3.5.1 使用psql 進行數據導入 60
3.5.2 使用psql 進行數據導出 61
3.5.3 從外部程式複製數據以及將數據複製到外部程式 62
3.6 使用psql 製作簡單的報表 62
第4 章 pgAdmin 的使用 65
4.1 pgAdmin 入門 65
4.1.1 功能概覽 66
4.1.2 如何連線到PostgreSQL 伺服器 67
4.1.3 pgAdmin 界面導航 68
4.2 pgAdmin 功能特性介紹 68
4.2.1 根據表定義自動生成SQL 語句 69
4.2.2 在pgAdmin3 中調用psql 69
4.2.3 在pgAdmin3 中編輯postgresql.conf 和pg_hba.conf 檔案 70
4.2.4 創建資料庫對象並設定許可權 70
4.2.5 數據導入和導出 73
4.2.6 備份與恢復 74
4.3 pgScript 腳本機制 78
4.4 以圖形化方式解釋執行計畫 80
4.5 使用pgAgent 執行定時任務 81
4.5.1 安裝pgAgent 81
4.5.2 規劃定時任務 82
4.5.3 一些有用的pgAgent 相關查詢語句 84
第5 章 數據類型 85
5.1 數值類型 85
5.1.1 serial 類型 85
5.1.2 生成數組序列的函式 86
5.2 文本類型 87
5.2.1 字元串函式 87
5.2.2 將字元串拆分為數組、表或者子字元串 88
5.2.3 正則表達式和模式匹配 89
5.3 時間類型 90
5.3.1 時區詳解 92
5.3.2 日期時間類型的運算符和函式 93
5.4 數組類型 95
5.4.1 數組構造函式 96
5.4.2 將數組元素展開為記錄行 97
5.4.3 數組的拆分與連線 98
5.4.4 引用數組中的元素 99
5.4.5 數組包含性檢查 99
5.5 區間類型 100
5.5.1 離散區間和連續區間 100
5.5.2 原生支持的區間類型 100
5.5.3 定義區間的方法 101
5.5.4 定義含區間類型欄位的表 102
5.5.5 適用於區間類型的運算符 102
5.6 JSON 數據類型 103
5.6.1 插入JSON 數據 103
5.6.2 查詢JSON 數據 104
5.6.3 輸出JSON 數據 105
5.6.4 JSON 類型的二進制版本:jsonb 106
5.6.5 編輯JSONB 類型的數據 108
5.7 XML 數據類型 109
5.7.1 插入XML 數據 110
5.7.2 查詢XML 數據 110
5.8 全文檢索 112
5.8.1 FTS 配置庫 113
5.8.2 TSVector 原始文本向量 115
5.8.3 TSQueries 檢索條件向量 117
5.8.4 使用全文檢索 119
5.8.5 對檢索結果進行排序 120
5.8.6 全文檢索向量信息的裁減 121
5.8.7 全文檢索機制對JSON 和JSONB 數據類型的支持 122
5.9 自定義數據類型和複合數據類型 122
5.9.1 所有表都有一個對應的自定義數據類型 123
5.9.2 構建自定義數據類型 124
5.9.3 複合類型中的空值處理 124
5.9.4 為自定義數據類型構建運算符和函式 125
第6 章 表、約束和索引 126
6.1 表 126
6.1.1 基本的建表操作 126
6.1.2 繼承表 128
6.1.3 原生分區表支持 128
6.1.4 無日誌表 130
6.1.5 TYPE OF 131
6.2 約束機制 132
6.2.1 外鍵約束 132
6.2.2 唯一性約束 133
6.2.3 check 約束 133
6.2.4 排他性約束 133
6.3 索引 134
6.3.1 PostgreSQL 原生支持的索引類型 135
6.3.2 運算符類 137
6.3.3 函式索引 138
6.3.4 基於部分記錄的索引 138
6.3.5 多列索引 140
第7 章 PostgreSQL 的特色SQL 語法 141
7.1 視圖 141
7.1.1 單表視圖 142
7.1.2 使用觸發器來更新視圖 143
7.1.3 物化視圖 145
7.2 靈活易用的PostgreSQL 專有SQL 語法 146
7.2.1 DISTINCT ON 147
7.2.2 LIMIT 和OFFSET 關鍵字 147
7.2.3 簡化的類型轉換語法 148
7.2.4 一次性插入多條記錄 148
7.2.5 使用ILIKE 實現不區分大小寫的查詢 148
7.2.6 使用ANY 運算符進行數組搜尋 149
7.2.7 可以返回結果集的函式 149
7.2.8 限制對繼承表的DELETE、UPDATE、INSERT 操作的影響範圍 150
7.2.9 DELETE USING 語法 150
7.2.10 將修改影響到的記錄行返回給用戶 150
7.2.11 UPSERT:INSERT 時如果主鍵衝突則進行UPDATE 151
7.2.12 在查詢中使用複合數據類型 152
7.2.13 使用$ 文本引用符 153
7.2.14 DO 154
7.2.15 適用於聚合操作的FILTER 子句 155
7.2.16 查詢百分位數與最高出現頻率數 157
7.3 視窗函式 158
7.3.1 PARTITION BY 子句 159
7.3.2 ORDER BY 子句 160
7.4 CTE 表達式 162
7.4.1 基本CTE 用法介紹 162
7.4.2 可寫CTE 用法介紹 163
7.4.3 遞歸CTE 用法介紹 163
7.5 LATERAL 橫向關聯語法 165
7.6 WITH ORDINALITY 子句 166
7.7 GROUPING SETS、CUBE 和ROLLUP 語法 168
第8 章 函式編寫 171
8.1 PostgreSQL 函式功能剖析 171
8.1.1 函式功能基礎知識介紹 171
8.1.2 觸發器和觸發器函式 174
8.1.3 聚合操作 175
8.1.4 受信與非受信語言 176
8.2 使用SQL 語言來編寫函式 177
8.2.1 編寫基本的SQL 函式 177
8.2.2 使用SQL 語言編寫聚合函式 179
8.3 使用PL/pgSQL 語言編寫函式 181
8.3.1 編寫基礎的PL/pgSQL 函式 181
8.3.2 使用PL/pgSQL 編寫觸發器函式 181
8.4 使用PL/Python 語言編寫函式 182
8.5 使用PL/V8、PL/CoffeeScript 以及PL/LiveScript 語言來編寫函式 184
8.5.1 編寫基本的函式 185
8.5.2 使用PL/V8 來編寫聚合函式 186
8.5.3 使用PL/V8 編寫視窗函式 187
第9 章 查詢性能調優 190
9.1 通過EXPLAIN 命令查看語句執行計畫 190
9.1.1 EXPLAIN 選項 190
9.1.2 運行示例以及輸出內容解釋 191
9.1.3 圖形化展示執行計畫 193
9.2 蒐集語句的執行統計信息 195
9.3 編寫更好的SQL 語句 196
9.3.1 在SELECT 語句中濫用子查詢 196
9.3.2 儘量避免使用SELECT * 語法 198
9.3.3 善用CASE 語法 199
9.3.4 使用Filter 語法替代CASE 語法 200
9.4 並行化語句執行 201
9.4.1 並行化的執行計畫是什麼樣子 201
9.4.2 並行化掃描 204
9.4.3 並行化關聯操作 205
9.5 人工干預規劃器生成執行計畫的過程 205
9.5.1 策略設定 205
9.5.2 你的索引被用到了嗎 206
9.5.3 表的統計信息 207
9.5.4 磁碟頁的隨機訪問成本以及磁碟驅動器的性能 209
9.6 數據快取機制 209
第 10 章 複製與外部數據 211
10.1 複製功能概覽 211
10.1.1 複製功能涉及的術語 212
10.1.2 複製機制的演進 214
10.1.3 第三方複製解決方案 214
10.2 複製環境的搭建 215
10.2.1 主伺服器的配置 215
10.2.2 為從屬伺服器配置全量複製環境 216
10.2.3 啟動流複製進程 217
10.2.4 使用邏輯複製實現部分表或者部分database 的複製 218
10.3 外部數據封裝器 219
10.3.1 查詢平面檔案 220
10.3.2 以不規則數組的形式查詢不規範的平面檔案 220
10.3.3 查詢其他PostgreSQL 服務實例上的數據 222
10.3.4 使用ogr_fdw 查詢其他二維表形式的數據源 224
10.3.5 查詢非傳統數據源 226
附錄A PostgreSQL 的安裝 228
附錄B PostgreSQL 自帶的命令行工具 233
作者簡介 242
封面介紹 242