第1章 PostgreSQL简介
1.1 什么是PostgreSQL
1.1.1 伯克利Postgres项目
l.1.2 Postgres95
1.1.3 PostgreSQL
1.2 Postgres目前支持的平台和不支持的平台
1.3 PostgreSQL的许可协议
1.4 关于本书
1.5 说明
第2章 安装和配置
2.1 下载与解压缩
2.2 快速安装
2.3 编译、安装与回归测试
2.3.1 运行Postgres的要求
2.3.2 安装过程
第3章 快速入门
3.1 Postgres架构
3.2 Postgres的几个概念
3.3 设置环境
3.4 交互式监视器
3.5 数据类型
3.6 创建和删除数据库
3.7 创建表、视图和索引等
3.7.1 创建表
3.7.2 创建索引
3.7.3 创建视图
3.7.4 删除表、索引和视图
3.8 查询数据
3.8.1 简单SELECT语句
3.8.2 连接
3.8.3 聚集运算符
3.8.4 分组
3.8.5 Having
3.8.6 子查询
3.8.7 UNION INTERSECT和EXCEPT
3.9 数据操纵
3.10 高级的特性
3.10.1 继承
3.10.2 非原子值
第4章 数据类型和运算符
4.1 数据类型
4.1.1 数值类型
4.1.2 serial类型
4.1.3 货币类型
4.1.4 字符类型
4.1.5 日期/时间类型
4.1.6 布尔类型
4.1.7 几何类型
4.1.8 IP v4网络地址和主机地址
4.2 与数据类型相关的运算符
4.2.1 通用运算符
4.2.2 数值运算符
4.2.3 几何运算符
4.2.4 时间间隔运算符
4.2.5 IP v4 CIDR运算符
4.2.6 IP v4 INET运算符
4.2.7 运算符的内部表示形式
4.2.8 字典优先级
4.3 与数据类型相关的函数
4.3.1 数学函数
4.3.2 字符串函数
4.3.3 日期/时间函数
4.3.4 几何函数
4.3.5 IP v4函数
4.3.6 Postgres函数常量
4.4 数据类型转换
4.4.1 运算符表达式的转换规则
4.4.2 函数运算中的转换规则
4.4.3 查询目标中的类型转换规则
4.4.4 UNION查询中的类型转换
第5章 SQL语法
5.1 关键词
5.1.1 保留关键词
5.1.2 非保留关键词
5.2 注释
5.3 名称
5.4 常量
5.4.1 字符串常量
5.4.2 整数常量
5.4.3 浮点数常量
5.4.4 Postgres用户定义类型常量
5.4.5 数组常量
5.5 域和列
5.5.1 域
5.5.2 列
5.6 运算符
5.7 表达式
5.7.1 参数
5.7.2 函数表达式
5.7.3 聚集表达式
5.8 目标表
5.9 限定条件
5.10 From列表
第6章 管理数据库
6.1 创建和删除数据库
6.1.1 为数据库指定存储位置
6.1.2 创建数据库
6.1.3 使用createdb程序创建数据库
6.1.4 删除数据库
6.1.5 使用dropdb删除数据库
6.2 运行时参数
6.2.1 设置运行时参数
6.2.2 恢复运行时参数
6.2.3 显示会话的运行时参数
6.3 用户管理
6.3.1 创建新用户
6.3.2 修改用户信息
6.3.3 删除用户
6.3.4 赋予用户权限
6.3.5 撤销用户权限
6.4 备份与恢复
6.4.1 用pg-dump备份数据
6.4.2 pg_dumpall
6.5 Postgres系统表
第7章 创建表
7.1 创建/删除序列
7.2 指定缺省值
7.3 数据完整性约束
7.3.1 NOT NULL约束
7.3.2 UNIQUE约束
7.3.3 CHECK约束
7.3.4 PRIMARY KEY约束
7.3.5 表约束CONSTRAINT子句
7.3.6 表UNIQUE约束
7.3.7 表PRIMARY KEY约束
7.4 数组列及继承
7.5 CREATE TABLE示例
7.6 CREATE TABLE AS
7.7 修改表定义
7.8 删除表
第8章 查询、插入、修改和删除
8.1 查询数据
8.1.1 简单查询
8.1.2 高级查询技术
8.1.3 查询示例
8.2 插入数据
8.3 删除记录
8.4 修改记录
8.5 正则表达式
8.5.1 原子
8.5.2 匹配范围
8.5.3 子表达式
8.5.4 方括号表达式
8.5.5 分支
8.5.6 反向引用
8.5.7 正则表达式示例
第9章 索引
9.1 创建和删除索引
9.2 创建与删除索引示例
第10章 psql
10.1 连接到数据库
10.2 命令行选项
10.3 psql元命令
10.4 psql高级特性
10.4.1 变量
10.4.2 SQL代换
10.4.3 psql提示
10.5 示例
10.6 其他问题
10.6.1 Bug和解决办法
10.6.2 GNU readline
第11章 规则系统
11.1 创建规则
11.2 删除规则
11.3 SELECT规则
11.3.1 根据用户身份执行不同的操作
11.3.2 直接将查询重定向
11.4 INSERT规则
11.4.1 根据用户身份执行操作
11.4.2 直接取消当前INSERT操作
11.4.3 将当前操作重定向为其他SQL语句
11.4.4 实现FOREIGN KEY约束
11.5 删除规则
11.5.1 根据用户身份确定删除操作
11.5.2 实现外键DELETE约束
11.5.3 实现对视图的删除
11.5.4 执行其他命令
11.6 UPDATE规则
11.6.1 根据用户身份确定UPDATE操作
11.6.2 实现视图更新
11.6.3 撤销UPDATE操作
11.6.4 执行其他SQL命令
第12章 视图
12.1 创建和删除视图
12.1.1 用CREATE创建视图
12.1.2 用DROP VIEW删除视图
12.2 视图的许可权限
第13章 触发器
13.1 创建触发器
13.2 删除触发器
13.3 与触发器管理器交互
13.4 数据变化可见性
13.5 示例
第14章 大对象接口
14.1 在SQL语句中访问大对象
14.2 在libpq中访问大对象
第15章 多版本并发控制
15.1 事务
15.2 事务隔离
15.2.1 ANSI/ISO隔离级别
15.2.2 读提交隔离级别
15.2.3 串行化隔离级别
15.3 加锁和表
15.3.1 表级锁
15.3.2 行级锁
15.4 加锁和索引
15.5 应用程序级的数据一致性检查
第16章 安全
16.1 用户验证
16.2 基于主机的存取控制
16.3 基于用户/组的存取控制
第17章 扩展PostgreSQL
17.1 Postgres类型系统
17.2 扩展SQL:函数
17.2.1 查询语言SQL函数
17.2.2 程序语言函数
17.2.3 编译语言C函数
17.2.4 函数重载
17.2.5 删除自定义函数
17.3 扩展SQL:类型
17.3.1 用户定义类型所需的函数
17.3.2 自定义数据类型
17.3.3 删除自定义数据类型
17.4 扩展SQL:运算符
17.4.1 创建新运算符
17.4.2 运算符优化信息
17.4.3 删除运算符
17.5 扩展SQL:聚集函数
17.5.1 创建聚集函数
17.5.2 删除聚集函数
第18章 服务器编程接口
18.1 SPI接口函数
18.1.1 SPI_connect
18.1.2 SPI_finish
18.1.3 SPI exec
18.1.4 SPI_prepare
18.1.5 SPI_saveplan
18.1.6 SPI_execp
18.1.7 SPI_copytuple
18.1.8 SPI_modifytuple
18.1.9 SPI_fnumber
18.1.10 SPI_fname
18.1.11 SPI_getvalue
18.1.12 SPI_getbinval
18.1.13 SPI_gettype
18.1.14 SPI_gettypeid
18.1.15 SPI_getrelname
18.1.16 SPI_palloc
18.1.17 SPI_repalloc
18.1.18 SPI_pfree
18.2 内存管理
18.3 数据变化的可见性
18.4 示例
第19章 libpq
19.1 数据库连接函数
19.1.1 PQconnectdb
19.1.2 PQsetdbLogin
19.1.3 PQsetdb
19.1.4 PQconnectStart和PQconnectPoll
19.1.5 PQconndefaults
19.1.6 PQfinish
19.1.7 PQreset
19.1.8 PQresetStart和PQresetPoll
19.1.9 返回连接属性的函数
19.1.10 PQerrorMessage
19.1.11 PQbackendPID
19.1.12 用于环境协商的函数
19.2 查询执行函数
19.2.1 PQexec
19.2.2 PQresultStatus
19.2.3 PQresStatus
19.2.4 PQresultErrorMessage
19.2.5 PQntuples
19.2.6 PQnfields
19.2.7 PQbinaryTuples
19.2.8 PQfname
19.2.9 PQfnumber
19.2.10 PQftype
19.2.11 PQfsize
19.2.12 PQfmod
19.2.13 PQgetvalue
19.2.14 PQgetlength
19.2.15 PQgetisnull
19.2.16 PQcmdStatus
19.2.17 PQcmdTuples
19.2.18 PQoidValue
19.2.19 PQoidStatus
19.2.20 PQprint
19.2.21 PQprintTuples
19.2.22 PQdisplayTuples
19.2.23 PQclear
19.2.24 PQmakeEmptyPGresult
19.3 异步查询处理
19.3.1 PQsendQuery
19.3.2 PQgetResult
19.3.3 PQconsumelnput
19.3.4 PQisBusy
19.3.5 PQsocket
19.3.6 PQrequestCancel
19.4 快速路径接口
19.5 异步通知
19.5.1 PQnotifies
19.5.2 PQgetline
19.5.3 PQgetlineAsync
19.5.4 PQputline
19.5.5 PQputnbytes
19.5.6 PQendcopy
19.6 Libpq跟踪函数
19.6.1 PQtrace
19.6.2 PQuntrac
19.7 Libpq控制函数
19.8 环境变量
19.9 示例程序
19.9.1 示例程序1
19.9.2 示例程序2
19.9.3 示例程序3
第20章 libpq++
20.1 环境变量
20.2 libpq++类
20.2.1 数据库连接函数
20.2.2 查询执行函数
20.2.3 异步通知
20.2.4 与COPY命令相关联的函数
第21章 pgtcl
21.1 pgtcl命令
21.1.1 pgconnect
ZI.1.2 pg_disconnect
21.1.3 pg_conndefaults
21.1.4 pg_exec
21.1.5 pg_result
21.1.6 pg_select
21.1.7 pg_listen
21.1.8 pg_lo_creat
21.1.9 pg_lo_open
21.1.10 pg_lo_close
21.1.11 pg_lo_read
21.1.12 pg_lo_write
21.1.13 pg_lo_lseek
21.1.14 pg_lo_tell
21.1.15 pg_lo_unlink
21.1.16 pg_lo_import
21.1.17 pg_lo_export
21.2 示例
第22章 ecpg
22.1 运行ecpg
22.2 使用嵌入式SQL语言
22.2.1 声明部分
22.2.2 包含语句
22.2.3 连接语句
22.2.4 断开连接
22.2.5 打开游标语句
22.2.6 提交语句
22.2.7 回滚语句
22.2.8 其他语句
22.3 错误处理
22.4 示例
第23章 编程语言
23.1 编程语言概述
23.2 创建编程语言
23.2.1 使用CREATE LANGUAGE
23.2.2 使用createlang
23.3 删除编程语言
23.3.1 使用DROP LANGUAGE
23.3.2 使用droplang
23.4 PL/pgSQL
23.4.1 PL/pgSQL的结构
23.4.2 注释
23.4.3 声明变量
23.4.4 数据类型
23.4.5 表达式
23.4.6 语句
23.4.7 触发器程序
23.4.8 例外处理
23.4.9 示例
23.5 PL/Tcl
23.5.1 在PL/Tcl中定义函数
23.5.2 在PL/Tcl中的全局数据
23.5.3 用PL/Tcl创建触发器程序
23.5.4 从PL/Tcl中访问数据库
23.5.5 模块和未知命令
第24章 实用程序
24.1 普通应用程序
24.1.1 createdb
24.1.2 createlang
24.1.3 createuser
24.1.4 dropdb
24.1.5 droplang
24.1.6 dropuser
24.1.7 pgaccess
24.1.8 pgadmin
24.1.9 pg_dump
24.1.10 pg_dumpall
24.1.11 pgtclsh
24.1.12 pgtksh
24.1.13 vacuumdb
24.2 系统实用程序
24.2.1 initdb
24.2.2 initlocation
24.2.3 ipcclean
24.2.4 pg_passwd
24.2.5 pg_upgrade
24.2.6 postgres
24.2.7 postmaster
第25章 SQL命令参考
25.1 CREATE DATABASE
25.2 DROP DATABASE
25.3 CREATE TABLE
25.4 CREATE TABLEAS
25.5 ALTER TABLE
25.6 DROP TABLE
25.7 CREATE USER
25.8 ALTER USER
25.9 DROP USER
25.10 CREATE AGGREGATE
25.11 DROP AGGREGATE
25.12 CREATE FUNCTION
25.13 DROP FUNCTION
25.14 CREATE INDEX
25.15 DROP INDEX
25.16 CREATE LANGUAGE
25.17 DROP LANGUAGE
25.18 CREATE OPERATOR
25.19 DROP OPERATOR
25.20 CREATE RULE
25.21 DROP RULE
25.22 CREATE SEQUENCE
25.23 DROP SEQUENCE
25.24 CREATE TRIGGER
25.25 DROP TRIGGER
25.26 CREATE TYPE
25.27 DROP TYPE
25.28 CREATE VIEW
25.29 DROP VIEW
25.30 SELECT
25.31 SELECT INTO
25.32 UPDATE
25.33 DELETE
25.34 INSERT
25.35 GRANT
25.36 REVOKE
25.37 BEGIN
25.38 COMMIT
25.39 ROLLBACK
25.40 ABORT
25.41 END
25.42 DECLARE
25.43 FETCH
25.44 MOVE
25.45 CLOSE
25.46 LISTEN
25.47 NOTIFY
25.48 UNLISTEN
25.49 LOAD
25.50 LOCK
25.51 COPY
25.52 SET
25.53 RESET
25.54 SHOW
25.55 EXPLAIN
25.56 TRUNCATE
25.57 CLUSTER
25.58 VACUUM