作 者:屠要峰 等 著
定 价:99
出 版 社:电子工业出版社
出版日期:2020年01月01日
页 数:443
装 帧:平装
ISBN:9787121369018
●第1篇准备
第1章初识 tgreSQL/2
1.1 tgreSQL的起源/2
1.2 tgreSQL简介/3
1.2.1基本概念/3
1.2.2存储体系结构/4
1.2.3进程体系架构/6
1.3 tgreSQL10版本的新特性/6
1.4小结/7
第2章安装和启动 tgreSQL/8
2.1安装 tgreSQL/8
2.1.1在Windows中安装 tgreSQL/8
2.1.2在Linux中安装 tgreSQL/12
2.1.3源码安装 tgreSQL/14
2.2初始化数据库/17
2.3数据库的基本配置/18
2.3.1配置数据库监听IP和端口/18
2.3.2配置数据库错误日志/18
2.4启动、停止、查看数据库/18
2.4.1启动数据库/18
2.4.2停止数据库/19
2.4.3查看数据库状态/19
2.5小结/19
第2篇入门
第3章创建数据库和表/21
3.1认识SQL语言/21
3.1.1SQL语句类型/21
3.1.2SQL数据类型/21
3.2使用交互式终端psql/22
3.2.1连接数据库/22
3.2.2常用命令/23
3.2.3使用技巧/26
3.3表空间的创建、修改和删除/27
3.3.1实例1:创建表空间/27
3.3.2实例2:修改表空间/29
3.3.3实例3:删除表空间/29
3.4数据库的创建、修改和删除/30
3.4.1实例4:创建数据库/30
3.4.2实例5:修改数据库/31
3.4.3实例6:删除数据库/32
3.5创建数据表/32
3.5.1创建表的语法格式/32
3.5.2使用CHECK约束/35
3.5.3使用非空约束/36
3.5.4使用专享性约束/36
3.5.5使用主键约束/37
3.5.6使用默认约束/38
3.5.7使用外键约束/38
3.5.8实例7:设置表的属性值自动增加/40
3.5.9实例8:查看表结构/41
3.6修改数据表/42
3.6.1实例9:修改表名/42
3.6.2实例10:修改字段名/43
3.6.3实例11:添加字段/43
3.6.4实例12:删除字段/44
3.6.5实例13:删除表的外键约束/44
3.7删除数据表/46
3.7.1实例14:删除没有被关联的表/46
3.7.2实例15:删除被其他表关联的主表/46
3.8数据的插入、修改和删除/47
3.8.1实例16:向表中插入数据/47
3.8.2实例17:修改表中的数据/48
3.8.3实例18:删除表中的数据/49
3.9数据的简单查询/50
3.9.1实例19:创建最简单的单表查询/50
3.9.2实例20:创建带过滤条件的查询/50
3.10小结/51
第4章数据类型及其运算符/52
4.1数值类型/52
4.1.1整数类型/52
4.1.2任意精度数字类型/53
4.1.3浮点类型/53
4.1.4序列类型/54
4.1.5货币类型/55
4.1.6实例21:使用数学运算符/55
4.2字符串类型/56
4.2.1字符串类型分类/57
4.2.2使用连接运算符/57
4.2.3使用模式匹配运算符/58
4.3二进制数据类型/60
4.3.1二进制数据类型简介/60
4.3.2二进制数据的十六进制格式/61
4.3.3二进制数据的转义格式/61
4.4日期类型和时间类型/61
4.4.1日期类型和时间类型分类/61
4.4.2日期类型和时间类型输入格式/62
4.4.3日期类型和时间类型输出格式/64
4.4.4时区/64
4.4.5使用日期类型和时间类型运算符/65
4.5布尔类型/66
4.5.1布尔类型简介/66
4.5.2布尔类型运算符/66
4.6位串类型/68
4.6.1位串类型简介/68
4.6.2实例22:使用位串类型运算符/68
4.7枚举类型/69
4.7.1声明枚举类型/69
4.7.2排序/69
4.7.3注意枚举类型安全性/70
4.8几何类型/71
4.8.1点(point)/71
4.8.2线(line)/72
4.8.3线段(lseg)/72
4.8.4矩形(box)/73
4.8.5路径(path)/74
4.8.6多边形(polygon)/75
4.8.7圆(circle)/75
4.8.8实例23:使用几何类型运算符/76
4.9JSON数据类型/77
4.9.1JSON数据类型简介/77
4.9.2JSON数据类型的输入/输出语法/78
4.9.3实例24:使用json运算符/79
4.9.4实例25:使用jsonb运算符/79
4.10范围类型/80
4.10.1内建范围类型/80
4.10.2范围类型的边界/81
4.10.3范围值的输入/81
4.10.4使用范围类型运算符/82
4.10.5实例26:定义自己的范围类型/83
4.11数组类型/83
4.11.1定义数组类型/84
4.11.2输入数组/844.11.3访问数组/86
4.11.4修改数组/87
4.11.5查找数组中的内容/88
4.11.6数组运算符/89
4.12小结/89
第5章函数/90
5.1数学函数/90
5.1.1认识数学函数/90
5.1.2实例27:使用数学函数对小数取整/93
5.2字符串函数/94
5.2.1认识字符串函数/95
5.2.2认识二进制字符串函数/99
5.2.3实例28:使用format()函数格式化输出/101
5.3数据类型格式化函数/103
5.4序列函数/104
5.4.1认识序列函数/104
5.4.2实例29:创建及使用序列函数/104
5.5日期函数和时间函数/107
5.5.1认识日期函数和时间函数/107
5.5.2实例30:使用ATTIMEZONE进行时区转换/110
5.5.3实例31:获取当前的日期和时间/111
5.5.4实例32:设置延时执行/112
5.6位串函数/113
5.6.1认识位串函数/113
5.6.2实例33:使用bit()函数转换整数和位串/113
5.7枚举函数/114
5.7.1认识枚举函数/114
5.7.2实例34:使用枚举函数获取枚举类型中的值/114
5.8几何函数/115
5.8.1认识几何函数/115
5.8.2实例35:使用area()函数计算几何类型的面积/117
5.9JSON函数/117
5.9.1JSON创建函数/117
5.9.2JSON处理函数/118
5.9.3实例36:使用to_json()函数将字符串转换成JSON格式/122
5.9.4实例37:使用json_array_length()函数统计JSON数据类型中的元素个数/122
5.10范围函数/123
5.10.1认识范围函数/123
5.10.2实例38:用range_merge()函数获取一个包含给定范围的最小范围/123
5.10.3实例39:用upper_inc()函数判断上界是否被包含在范围内/123
5.11数组函数/124
5.11.1认识数组函数/124
5.11.2实例40:用array_position()函数在数组中检索数据/125
5.11.3实例41:用array_to_string()函数将数组转为字符串/126
5.12其他函数/126
5.12.1聚合函数/126
5.12.2集合返回函数/131
5.12.3系统信息函数/131
5.12.4系统管理函数/133
5.13小结/134
第6章查询和修改数据/135
6.1SELECT语法/135
6.2单表查询/136
6.2.1实例42:简单查询/136
6.2.2实例43:等值查询/137
6.2.3实例44:范围查询/137
6.2.4实例45:去重/138
6.2.5实例46:排序/140
6.2.6实例47:分组/140
6.2.7实例48:分页/141
6.3多表查询/142
6.3.1实例49:内连接/143
6.3.2实例50:外连接/144
6.3.3实例51:交叉连接/146
6.3.4实例52:多表关联复合查询/146
6.4子查询/147
6.4.1实例53:IN/NOTIN子查询/147
6.4.2实例54:EXISTS/NOTEXISTS子查询/148
6.4.3实例55:ANY/SOME/ALL子查询/149
6.5模糊匹配查询/150
6.5.1实例56:LIKE查询/150
6.5.2实例57:SIMILARTO查询/152
6.6查询运算/152
6.6.1实例58:聚集运算/152
6.6.2实例59:分组运算/154
6.6.3实例60:表达式运算/156
6.6.4实例61:递归查询/157
6.7窗口函数/158
6.8高级操作/162
6.8.1实例62:归并数据/162
6.8.2实例63:批量插入/164
6.8.3实例64:批量更新/165
6.8.4实例65:关联更新/166
6.8.5实例66:批量删除/166
6.8.6实例67:关联删除/166
6.8.7实例68:移动数据到历史表/167
6.8.8实例69:清空表/167
6.9小结/168
第3篇进阶
第7章索引/170
7.1索引简介/170
7.1.1索引的含义和作用/170
7.1.2索引的分类/171
7.1.3索引的设计原则/172
7.2索引操作/172
7.2.1创建索引/172
7.2.2修改索引/174
7.2.3删除索引/175
7.3常用索引方法/176
7.3.1多列索引/176
7.3.2组合索引/177
7.3.3专享索引/177
7.3.4表达式索引/178
7.3.5部分索引/178
7.3.6索引与排序/180
7.4索引类型/180
7.4.1B-tree索引/180
7.4.2Hash索引/181
7.4.3GiST索引/182
7.4.4SP-GiST索引/184
7.4.5GIN索引/185
7.4.6BRIN索引/186
7.5索引使用案例/187
7.5.1实例70:使用GiST索引提升RANGE类型数据的查询性能/187
7.5.2实例71:使用SP-GiST索引快速查找几何空间数据/189
7.5.3实例72:使用GIN索引快速查找JSON数据/190
7.5.4实例73:使用BRIN索引快速检索时间类型数据/192
7.6小结/194
第8章视图/195
8.1为什么使用视图/195
8.2普通视图/195
8.2.1创建视图/196
8.2.2使用视图/198
8.3物化视图/201
8.3.1物化视图和普通视图的区别/201
8.3.2创建和刷新物化视图/201
8.3.3实例74:使用物化视图优化查询性能/203
8.4小结/205
第9章触发器/206
9.1常规触发器/206
9.1.1了解常规触发器/206
9.1.2实例75:创建触发器/208
9.1.3实例76:修改触发器/211
9.1.4实例77:删除触发器/212
9.1.5实例78:注意数据变更的可见性/213
9.2事件触发器/214
9.2.1事件触发器支持的事件/214
9.2.2实例79:创建一个具有数据库审计功能的事件触发器/215
9.3小结/217
第10章表继承和表分区/218
10.1表继承/218
10.1.1表继承的使用场景/218
10.1.2实例80:创建表继承/219
10.1.3实例81:使用表继承/221
10.1.4确定表继承数据来源/228
10.1.5表继承的局限性和注意事项/230
10.2表分区/231
10.2.1表分区的使用场景/231
10.2.2表分区的实现方式/232
10.2.3实例82:创建表分区/233
10.2.4实例83:使用表分区/235
10.2.5实例84:维护表分区/237
10.2.6使用约束排除提升查询性能/240
10.2.7表分区注意事项/243
10.3小结/243
第11章管理用户权限和模式/244
11.1了解用户、角色和权限/244
11.2管理用户、角色和权限/245
11.2.1实例85:创建用户/245
11.2.2实例86:删除用户/246
11.2.3实例87:创建角色/247
11.2.4实例88:删除角色/249
11.2.5实例89:给角色授予权限/250
11.2.6实例90:使用系统默认角色/251
11.3管理数据库模式/252
11.3.1实例91:使用数据库模式/252
11.3.2实例92:设置模式的搜索路径/253
11.3.3管理数据库模式权限/254
11.3.4pg_catalog模式/254
11.4小结/255
第12章配置和管理数据库服务器/256
12.1使用不同方式进行参数设置/256
12.1.1了解参数格式/256
12.1.2实例93:通过配置文件设置参数/257
12.1.3实例94:通过SQL命令设置参数/259
12.1.4实例95:通过shell命令设置参数/261
12.1.5实例96:使用include方式管理配置文件/262
12.2配置postgresql.conf文件的参数/262
12.2.1连接和安全认证参数/263
12.2.2缓存和存储参数/264
12.2.3WAL日志参数/266
12.2.4错误日志参数/267
12.2.5AUTOVACUUM参数/274
12.3配置pg_hba.conf文件的参数/274
12.3.1了解不同客户端认证方法/275
12.3.2实例97:使用trust配置客户端认证/276
12.3.3实例98:使用md5配置客户端认证/277
12.3.4实例99:使用cert配置客户端认证/277
12.4服务端常用工具/277
12.4.1实例100:使用initdb初始化数据库/277
12.4.2实例101:使用pg_ctl管理数据库服务/278
12.4.3实例102:使用pg_controldata查看控制信息/280
12.4.4实例103:使用pg_rewind同步数据目录/282
12.5小结/283
第13章备份和恢复数据/284
13.1逻辑备份和恢复/284
13.1.1实例104:使用pg_dump工具备份单库单表数据/284
13.1.2实例105:使用pg_restore工具恢复数据/287
13.1.3实例106:使用pg_dumpall工具备份所有库表数据/289
13.1.4实例107:使用psql工具恢复pg_dumpall备份的数据/289
13.2物理备份和恢复/289
13.2.1实例108:使用pg_basebackup工具热备份/290
13.2.2实例109:使用基础备份恢复数据/292
13.3增量备份和恢复/293
13.3.1实例110:使用归档日志进行增量备份/293
13.3.2实例111:将数据库状态恢复到指定时间点/294
13.3.3实例112:恢复到指定事务/297
13.4-第三方备份恢复工具/299
13.4.1认识pg_rman工具/299
13.4.2实例113:使用pg_rman工具备份数据/301
13.5小结/304
第4篇高阶
第14章事务/306
14.1事务的基本特性/306
14.1.1事务模型要解决的问题/306
14.1.2事务的四大特性/307
14.1.3实例114:设置合适的事务隔离级别/308
14.2理解事务的实现原理/310
14.2.1WAL机制/310
14.2.2MVCC机制/311
14.2.3Checkpoint机制/314
14.2.4CrashRecovery机制/315
14.2.5事务并发与锁机制/316
14.3使用事务/319
14.3.1理解事务语法/319
14.3.2实例115:使用ROLLBACK回滚事务/320
14.3.3实例116:使用COMMIT提交事务/321
14.3.4实例117:使用SAVEPOINT回滚部分事务/321
14.4小结/323
第15章优化SQL语句/324
15.1理解查询优化器的工作原理/324
15.1.1SQL语句执行过程/324
15.1.2了解查询树/325
15.1.3了解逻辑优化/326
15.1.4逻辑优化:对子查询进行优化/326
15.1.5逻辑优化:条件表达式优化及等价谓词重写优化/327
15.1.6逻辑优化:外连接优化/328
15.1.7了解物理优化/329
15.1.8代价估算/332
15.2查看并分析执行计划/334
15.2.1EXPLAIN命令介绍/334
15.2.2EXPLAIN输出解读/336
15.2.3实例118:使用EXPLAIN分析执行计划/338
15.3常见SQL语句优化/343
15.3.1实例119:使用索引避免表扫描/343
15.3.2实例120:子查询优化/345
15.3.3实例121:表连接优化/347
15.3.4实例122:使用UNIONALL代替UNION/349
15.3.5实例123:避免使用“SELECT*”/350
15.3.6实例124:为jsonb字段建立合适的索引/351
15.4小结/352
第16章优化数据库服务端性能/353
16.1了解数据库性能指标/353
16.1.1衡量数据库性能的指标/353
16.1.2影响数据库性能的硬件因素/353
16.1.3实例125:使用nmon工具监控Linux性能/356
16.2优化存储性能/359
16.2.1物理存储介质简介/359
16.2.2存储路径隔离原则/361
16.3优化数据库配置参数/366
16.3.1优化内存资源类参数/366
16.3.2优化脏页刷写类参数/368
16.3.3优化空间回收类参数/369
16.3.4优化WAL日志文件相关参数/372
16.3.5数据库性能视图/376
16.4小结/383
第17章PL/pgSQL服务端编程/384
17.1PL/pgSQL编程基础/384
17.1.1PL/pgSQL的结构/384
17.1.2PL/pgSQL的声明/386
17.1.3PL/pgSQL的表达式/389
17.1.4PL/pgSQL的基本语句/389
17.1.5PL/pgSQL的控制结构/392
17.1.6PL/pgSQL的游标/399
17.1.7PL/pgSQL的错误和消息/401
17.1.8PL/pgSQL的触发器函数/402
17.2PL/pgSQL编程实战/405
17.2.1PL/pgSQL开发建议/405
17.2.2实例126:编写一个自定义用户函数/407
17.2.3实例127:从PL/SQL移植到PL/pgSQL/409
17.3小结/411
第18章高可用方案/412
18.1如何实现高可用方案/412
18.1.1基本概念/412
18.1.2实现自动故障接管(Failover)/414
18.1.3WAL归档与流复制/415
18.1.4防止WAL日志文件被过早删除/418
18.1.5巧用级联复制/419
18.1.6同步复制与读写分离/420
18.2实例128:基于Corosync+Pacemaker的方案/424
18.2.1初识Corosync和Pacemaker/424
18.2.2Corosync和Pacemaker的安装/426
18.2.3基于Corosync+Pacemaker的高可用方案及实现/430
18.3实例129:基于Stolon的方案/436
18.3.1Stolon方案架构及特性/436
18.3.2Stolon方案安装配置及实例/437
18.4小结/443
本书基于采用“理论+实践”的形式编写,通过大量的实例,详细讲解了 tgreSQL的各种SQL特性、参数配置、备份恢复、性能调优、服务端编程、高可用方案等。
第1篇“准备”,包括初识 tgreSQL、安装和启动 tgreSQL;第2篇“入门”,包括创建数据库和表、数据类型及其运算符、函数、查询和修改数据;第3篇“进阶”,包括索引、视图、触发器、表继承和表分区、管理用户权限和模式、配置和管理数据库服务器、备份和恢复数据;第4篇“高阶”,包括事务、优化SQL语句、优化数据库服务端性能、PL/pgSQL服务端编程、高可用方案。
本书结构清晰、内容翔实、案例丰富、通俗易懂、实用性强,适合对数据库(特别是 tgreSQL)感兴趣的读者自学参考。另外,本书也适合作为社会培训机构的培训教材,还可作为大中专院校相关专业的教学参考书。