本
PostgreSQL 教程
可帮助您快速了解 PostgreSQL。您将通过许多实际示例快速掌握 PostgreSQL,并将这些知识应用于使用 PostgreSQL 开发应用程序。
如果你是 …
寻求快速学习 PostgreSQL。
使用 PostgreSQL 作为后端数据库管理系统开发应用程序。
从其他数据库管理系统(例如 MySQL、Oracle 和 Microsoft SQL Server)迁移到 PostgreSQL。
您将在此网站上找到快速有效地开始使用 PostgreSQL 所需的所有信息。
PostgreSQL 教程演示了 PostgreSQL 的许多独特功能,这些功能使其成为最先进的开源数据库管理系统。
本部分向您展示如何在 Windows、Linux 和 macOS 上安装 PostgreSQL,帮助您开始使用 PostgreSQL。您还将学习如何使用 psql 工具连接到 PostgreSQL,以及如何将示例数据库加载到 PostgreSQL 中进行练习。
PostgreSQL 基础教程
首先,您将学习如何使用基本数据查询技术从单个表中查询数据,包括查询数据、对结果集进行排序和过滤行。然后,您将了解高级查询,例如连接多个表、使用集合操作以及构造子查询。最后,您将学习如何管理数据库表,例如创建新表或修改现有表的结构。
第 1 节. 查询数据
简单查询
– 向您展示如何从单个表中查询数据。
列别名
– 了解如何为查询中的列或表达式分配临时名称。
排序
– 指导您如何对查询返回的结果集进行排序。
去重查询
– 为您提供一个删除结果集中重复行的子句。
分页查询
– 指导您如何对查询返回的结果集进行分页。
第 2 节. 过滤数据
WHERE
– 根据指定条件过滤行。
LIMIT
– 获取查询生成的行的子集。
FETCH
– 限制查询返回的行数。
IN
– 选择与值列表中的任何值匹配的数据。
BETWEEN
– 选择值范围内的数据。
LIKE
– 基于模式匹配过滤数据。
IS NULL
– 检查值是否为空。
第 3 节. 连接多个表
连接
– 向您展示 PostgreSQL 中连接的简要概述。
表别名
– 描述如何在查询中使用表别名。
内连接
– 从一个表中选择在其他表中具有相应行的行。
左连接
– 从一个表中选择行,这些行在其他表中可能有也可能没有对应的行。
自连接
– 通过将表与自身进行比较来将表与其自身连接。
完全外连接
– 使用完全连接查找一个表中在另一个表中没有匹配行的行。
交叉连接
– 生成两个或多个表中的行的笛卡尔积。
自然连接
– 根据连接表中的公共列名称,使用隐式连接条件连接两个或多个表。
横向连接
– 通过连接交叉引用子查询中的行,和构建复合结果集。
第 4 节. 数据分组
GROUP BY
– 将行分成组并对每个组应用聚合函数。
HAVING
– 对组应用条件。
PARTITION BY
– 将行分成组并对每个组应用窗口函数。
第 5 节. 集合运算
UNION
– 将多个查询的结果集合并为一个结果集。
INTERSECT
– 组合两个或多个查询的结果集并返回一个结果集,该结果集的行都出现在两个结果集中。
EXCEPT
– 返回第一个查询中未出现在第二个查询的输出中的行。
第 6 节. 分组集、多维分组和汇总
分组集
– 在报告中生成多个分组集。
CUBE
– 定义多个分组集,其中包括所有可能的维度组合。
ROLLUP
– 生成包含总计和小计的报告。
第 7 节. 子查询
子查询
– 编写一个嵌套在另一个查询中的查询。
相关子查询
– 向您展示如何使用相关子查询,来执行依赖于正在处理的当前行的值的查询。
ANY
– 通过将某个值与子查询返回的一组值进行比较来检索数据。
ALL
– 通过将值与子查询返回的值列表进行比较来查询数据。
EXISTS
– 检查子查询返回的行是否存在。
第 8 节. 公共表表达式
PostgreSQL CTE
– 向您介绍 PostgreSQL 公共表表达式或 CTE。
使用 CTE 的递归查询
– 讨论递归查询并学习如何在各种上下文中应用它。
第 9 节. 修改数据
在本节中,您将学习如何使用
INSERT
语句向表中插入数据、使用
UPDATE
语句修改现有数据以及使用
DELETE
语句删除数据。此外,您还将学习如何使用 UPSERT 语句来合并数据。
插入
– 指导您如何将单行插入表中。
插入多行
– 向您展示如何在表中插入多行。
更新
– 更新表中的现有数据。
连接更新
– 根据另一个表中的值更新表中的值。
删除
– 删除表中的数据。
连接删除
– 根据另一个表中的值删除表中的行。
级联删除
– 在删除父表中的行时级联删除子表中的相关行。
UPSERT
– 如果新行已存在于表中,则插入或更新数据。
合并
– 有条件地插入、更新和删除一个表中的行。
第 10 节. 事务
PostgreSQL 事务
– 向您展示如何使用
BEGIN
、
COMMIT
和
ROLLBACK
语句,来处理 PostgreSQL 中的事务。
PostgreSQL 子事务
– 向您展示如何使用
SAVEPOINT
、
ROLLBACK TO SAVEPOINT
和
RELEASE SAVEPOINT
语句,来处理 PostgreSQL 子事务。
并发锁定和组合事务
– 向您介绍什么是组合事务,它为什么会存在,以及会在什么情况下出现。
第 11 节. 导入和导出数据
您将学习如何使用
COPY
命令、DBeaver 工具,以 CSV、SQL 文件格式对 PostgreSQL 数据进行导入和导出。
将 CSV 文件导入表中
– 向您展示如何将 CSV 文件导入表中。
导出表到 CSV 文件
– 向您展示如何将表导出到 CSV 文件。
使用 DBeaver 导入数据
– 向您展示如何使用 DBeaver 将数据从文件导入到表中。
使用 DBeaver 导出表
– 向您展示如何使用 DBeaver 将表导出到不同类型和格式的文件。
使用 DBeaver 合并数据
– 向您展示如何使用 DBeaver 将文件中的数据合并到表中。
第 12 节. 管理表
在本节中,您将开始探索 PostgreSQL 数据类型,并向您展示如何创建新表和修改现有表的结构。
数据类型
– 涵盖最常用的 PostgreSQL 数据类型。
创建表
– 指导您如何在数据库中创建新表。
SELECT INTO
和
CREATE TABLE AS
– 向您展示如何从查询的结果集创建新表。
使用
SERIAL 自增列
– 使用 SERIAL 将自动增量列添加到表中。
序列
– 向您介绍序列并描述如何使用序列生成数字序列。
标识列
– 向您展示如何使用标识列。
生成列
– 向您展示如何使用生成列。
更改表
– 修改现有表的结构。
重命名表
– 将表的名称更改为新名称。
添加列
– 向您展示如何向现有表添加一列或多列。
删除列
– 演示如何删除表的列。
更改列数据类型
– 向您展示如何更改列的数据。
重命名列
– 说明如何重命名表中的一列或多列。
删除表
– 删除现有表及其所有依赖对象。
截断表
– 快速有效地删除大表中的所有数据。
临时表
– 向您展示如何使用临时表。
复制表
– 向您展示如何将表格复制到新表格。
表分区
– 向您展示如何使用表分区。
管理分区表
– 向您展示如何管理分区表。
引发表重写的 DDL 命令
– 向您介绍哪些 DDL 命令会导致表的重写。
第 13 节. 了解 PostgreSQL 约束
主键
– 说明在创建表或向现有表添加主键时如何定义主键。
外键
– 展示如何在创建新表时定义外键约束或为现有表添加外键约束。
检查约束
– 添加逻辑以基于布尔表达式检查值。
唯一约束
– 确保一列或一组列中的值在整个表中是唯一的。
非空约束
– 确保列中的值不是
NULL
。
第 14 节. 深入了解 PostgreSQL 数据类型
布尔型
– 使用布尔数据类型存储
TRUE
和
FALSE
值。
字符型
– 了解如何使用各种字符类型,包括
char
、
varchar
和
text
。
numeric
– 向您展示如何使用
numeric
类型来存储需要精度的值。
double precision
– 了解如何在数据库中存储不准确的可变精度数字。double precision 类型也称为 float 类型。
real
– 指导您如何在数据库中使用单精度浮点数。
整型
– 向您介绍 PostgreSQL 中的各种整数类型,包括
smallint
、
int
和
bigint
。
date
– 引入
date
用于存储日期值的数据类型。
时间戳
– 快速了解时间戳数据类型。
间隔
– 向您展示如何使用间隔数据类型有效地处理一段时间。
time
– 使用
time
数据类型来管理一天中的时间值。
UUID
– 指导您如何使用
UUID
数据类型以及如何使用提供的模块生成
UUID
值。
数组
– 向您展示如何使用数组,并向您介绍一些用于数组操作的方便函数。
hstore
– 向您介绍数据类型,它是存储在 PostgreSQL 中单个值中的一组键/值对。
JSON
– 说明如何使用 JSON 数据类型,并向您展示如何使用一些最重要的 JSON 运算符和函数。
用户定义的数据类型
– 向您展示如何使用
CREATE DOMAIN
和
CREATE TYPE
语句创建用户定义的数据类型。
bytea
– 了解如何在数据库中存储二进制字节串。
第 15 节. 条件表达式和运算符
CASE
– 向您展示如何使用
CASE
表达式构成条件查询。
COALESCE
– 返回第一个非空参数。您可以使用它将
NULL
替换为一个默认值。
NULLIF
– 如果第一个参数等于第二个参数则返回
NULL
。
CAST
– 从一种数据类型转换为另一种数据类型,例如,从字符串转换为整数,从字符串转换为日期。
第 16 节. PostgreSQL 实用程序
psql 命令
– 向您展示最常见的 psql 命令,帮助您更快、更有效地与 psql 交互。
第 17 节. 故障处理
应对死锁
– 指导您如何在 PostgreSQL 中处理死锁的问题。
处理数据块损坏
– 指导您如何处理 PostgreSQL 中损坏的数据块。
处理 TOAST 数据损坏
– 指导您如何处理 PostgreSQL 中损坏的 TOAST 数据。
页面缓存如何影响查询性能?
– 指导您如何分析页面缓存对 PostgreSQL 性能的影响。
处理事务 ID 回卷的故障
– 指导您如何处理 PostgreSQL 中事务 ID 回卷的故障。
检查后端进程的内存使用情况
– 指导您如何检查 PostgreSQL 中后端进程的内存使用情况,和进行故障处理。
记录函数内错误的调用栈
– 指导您如何记录在指定函数内发生错误时的调用栈。
分区剪枝不起作用的原因
– 向您介绍在 PostgreSQL 中分区剪枝不起作用的主要原因。
第 18 节. PostgreSQL 技巧
如何比较两个表
– 描述如何比较数据库中两个表中的数据。
使用 pgAdmin 4 对比数据架构
– 指导您如何使用 pgAdmin 4 提供的架构差异功能,比较两个数据库或两个模式之间的对象。
使用 DBeaver 迁移表数据
– 向您介绍使用 DBeaver 工具,在不同数据库之间或同一数据库内的表之间传输数据。
如何在 PostgreSQL 中删除重复行
– 向您展示从表中删除重复行的各种方法。
如何生成某个范围内的随机数
– 说明如何生成特定范围内的随机数。
PostgreSQL 高级教程
这个 PostgreSQL 高级教程涵盖了高级概念,包括存储过程、索引、视图、触发器和数据库管理。
PostgreSQL 为内置数据类型提供了大量的函数。本节向您展示如何使用一些最常用的 PostgreSQL 函数。
此 PostgreSQL 存储过程部分将逐步向您展示如何使用 PL/pgSQL 过程语言开发 PostgreSQL 用户定义函数。
本节向您介绍 PostgreSQL 触发器概念,并展示如何在 PostgreSQL 中管理触发器。
我们将向您介绍数据库视图概念,并向您展示如何管理视图,例如在数据库中创建、更改和删除视图。
PostgreSQL 索引是增强数据库性能的有效工具。索引可以帮助数据库服务器比没有索引时更快地找到特定行。
本节向您介绍 PostgreSQL 性能优化,并展示如何在 PostgreSQL 中优化各种场景的性能问题。
PostgreSQL 管理涵盖 PostgreSQL 数据库服务器最重要的活动,包括角色和数据库管理、备份和恢复。
PostgreSQL 监控涵盖 PostgreSQL 数据库服务器最重要的监控和运维活动。
本节向您展示,如何从使用流行编程语言(例如 Java、Python 和 PHP)的应用程序,与 PostgreSQL 数据库进行交互。
PostgreSQL Java 教程
– 此 PostgreSQL JDBC 部分向您展示,如何使用 Java JDBC 驱动程序与 PostgreSQL 数据库进行交互。
PostgreSQL Python 教程
– 此 PostgreSQL Python 部分向您展示,如何使用 Python 编程语言与 PostgreSQL 数据库进行交互。