九月 27, 2024
本 PostgreSQL 教程可帮助您快速了解 PostgreSQL。您将通过许多实际示例快速掌握 PostgreSQL,并将这些知识应用于使用 PostgreSQL 开发应用程序。
如果你是 …
- 寻求快速学习 PostgreSQL。
- 使用 PostgreSQL 作为后端数据库管理系统开发应用程序。
- 从其他数据库管理系统(例如 MySQL、Oracle 和 Microsoft SQL Server)迁移到 PostgreSQL。
您将在此网站上找到快速有效地开始使用 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 节. 分组集、多维分组和汇总
第 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 子事务。 - 并发锁定和组合事务 – 向您介绍什么是组合事务,它为什么会存在,以及会在什么情况下出现。
- SKIP LOCKED 跳过锁定 – 向您介绍如何在 PostgreSQL 中使用
SKIP LOCKED
,以避免和解决死锁的问题。
第 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 中的统计信息损坏。
- 处理 PL/pgSQL 运行时错误 – 指导您如何对 PostgreSQL 中的 PL/pgSQL 运行时错误进行处理。
- 页面缓存如何影响查询性能? – 指导您如何分析页面缓存对 PostgreSQL 性能的影响。
- 处理事务 ID 回卷的故障 – 指导您如何处理 PostgreSQL 中事务 ID 回卷的故障。
- 检查后端进程的内存使用情况 – 指导您如何检查 PostgreSQL 中后端进程的内存使用情况,和进行故障处理。
- 记录函数内错误的调用栈 – 指导您如何记录在指定函数内发生错误时的调用栈。
- 分区剪枝不起作用的原因 – 向您介绍在 PostgreSQL 中分区剪枝不起作用的主要原因。
第 18 节. PostgreSQL 技巧
- 如何比较两个表 – 描述如何比较数据库中两个表中的数据。
- 使用 pgAdmin 4 对比数据架构 – 指导您如何使用 pgAdmin 4 提供的架构差异功能,比较两个数据库或两个模式之间的对象。
- 使用 DBeaver 迁移表数据 – 向您介绍使用 DBeaver 工具,在不同数据库之间或同一数据库内的表之间传输数据。
- 如何在 PostgreSQL 中删除重复行 – 向您展示从表中删除重复行的各种方法。
- 如何生成某个范围内的随机数 – 说明如何生成特定范围内的随机数。
- 使用 PostGIS 进行基础的地理空间数据查询 – 向您演示用于处理地理空间数据的基础 PostGIS 查询。
PostgreSQL 高级教程
这个 PostgreSQL 高级教程涵盖了高级概念,包括存储过程、索引、视图、触发器和数据库管理。
PostgreSQL 函数
PostgreSQL 为内置数据类型提供了大量的函数。本节向您展示如何使用一些最常用的 PostgreSQL 函数。
PostgreSQL PL/pgSQL
此 PostgreSQL 存储过程部分将逐步向您展示如何使用 PL/pgSQL 过程语言开发 PostgreSQL 用户定义函数。
PostgreSQL 触发器
本节向您介绍 PostgreSQL 触发器概念,并展示如何在 PostgreSQL 中管理触发器。
PostgreSQL 视图
我们将向您介绍数据库视图概念,并向您展示如何管理视图,例如在数据库中创建、更改和删除视图。
PostgreSQL 索引
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 数据库进行交互。
- 使用 Golang 连接到 PostgreSQL – 向您介绍如何使用 Go 编程语言与 PostgreSQL 数据库进行交互。