Logo
☆☆☆☆☆
0.0
Advanced
65h

PostgreSQL的艺术

PostgreSQL 是一种流行且广泛使用的开源关系型数据库管理系统。近年来,由于其强大的功能、高性能和易用性,它获得了显著的市场份额。从初创公司到大型企业,众多组织都在将 PostgreSQL 作为主要的数据库系统,使其成为开发者的一项热门技能。 本课程将通过大量代码示例,采用多种方法教你掌握 PostgreSQL。你将学会如何轻松地将 SQL 集成到自己的应用程序中。每个新的 SQL 概念都配有简洁明了的查询示例,帮助你简化学习过程,并确保你能专注于新知识的理解。此外,课程在必要时会参考 PostgreSQL 官方文档——一份极为出色的参考手册。 完成本课程后,你将深入了解 PostgreSQL 提供的额外数据类型和扩展功能。这使得本课程成为希望拓展技能的开发者的宝贵资源。

42 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
PostgreSQL的艺术
PostgreSQL 是一种流行且广泛使用的开源关系型数据库管理系统。近年来,由于其强大的功能、高性能和易用性,它获得了显著的市场份额。从初创公司到大型企业,众多组织都在将 PostgreSQL 作为主要的数据库系统,使其成为开发者的一项热门技能。 本课程将通过大量代码示例,采用多种方法教你掌握 ...

WHAT YOU'LL LEARN

对 PostgreSQL 的理解及其在管理数据库中的 CRUD 操作应用

Content

42 Lessons • 0 Quizzes • 0 Challenges

第一部分:前言
  1. 1

    课程简介

  2. 2

    课程概述

  3. 3

    所需架构

PostgreSQL 简介
  1. 1

    为什么选择 PostgreSQL

  2. 2

    一些有用的命令

  3. 3

    测验:PostgreSQL入门

第二部分:结构化查询语言入门
  1. 1

    SQL简介

  2. 2

    使用 SQL

  3. 3

    第一个使用场景

  4. 4

    关于 SQL 注入的一点说明

  5. 5

    PostgreSQL 协议:服务器端预处理语句

  6. 6

    返回发现SQL

  7. 7

    计算每周变化

  8. 8

    SQL 编写规范

  9. 9

    挑战:计算每两周的变化

  10. 10

    解决方案回顾:计算每两周的变化

第三部分:编写SQL查询
  1. 1

    SQL 查询编写入门

业务逻辑
  1. 1

    数据库中的业务逻辑

  2. 2

    应用代码中的业务逻辑

  3. 3

    正确性

  4. 4

    效率

  5. 5

    存储过程:一种数据访问 API

  6. 6

    测验:SQL 与业务逻辑

  7. 7

    挑战:实现业务逻辑

  8. 8

    解决方案回顾:实现业务逻辑

一个小型应用
  1. 1

    一个小型应用简介

  2. 2

    加载和查询数据库

  3. 3

    用于 Chinook 数据库的 Python 应用程序

  4. 4

    挑战:Top-N 事实手册条目

  5. 5

    解决方案回顾:Top-N 事实手册条目

SQL REPL:交互式环境设置
  1. 1

    SQL REPL 简介

  2. 2

    开始使用 psql

  3. 3

    查询重写与验证

  4. 4

    挑战:在 PostgreSQL 中进行测试

  5. 5

    解决方案回顾:PostgreSQL 中的测试

  6. 6

    回归测试

  7. 7

    挑战:PostgreSQL 中的回归测试

  8. 8

    解决方案回顾:PostgreSQL 中的回归测试

PostgreSQL 中的索引
  1. 1

    索引策略

  2. 2

    索引访问方法

  3. 3

    高级索引

  4. 4

    测验:加载数据库、REPL、测试与索引

第四部分:SQL 工具箱
  1. 1

    SQL 工具箱入门

SQL 工具
  1. 1

    SQL 的子语言

  2. 2

    SELECT 语句的结构

  3. 3

    处理函数与数据源

  4. 4

    连接与限制

SQL 中的输出管理
  1. 1

    使用 Order By 进行排序

  2. 2

    Top-N 排序:限制与分页

  3. 3

    聚合

  4. 4

    限制选定的组:Having 子句

  5. 5

    分组集

  6. 6

    公共表表达式

  7. 7

    结果集操作

  8. 8

    挑战:在SQL中管理输出

  9. 9

    解决方案回顾:在 SQL 中管理输出

理解空值
  1. 1

    三值逻辑

  2. 2

    空值在应用程序中的应用

  3. 3

    外连接会引入空值

  4. 4

    测验:SQL 中的查询、查询结果及空值

  5. 5

    挑战:理解空值

  6. 6

    解决方案回顾:理解空值

窗口函数
  1. 1

    窗口与帧

  2. 2

    划分为不同的帧

  3. 3

    使用窗口函数

关系与连接
  1. 1

    理解关系

  2. 2

    SQL连接类型

  3. 3

    测验:窗口函数、关系与连接

第五部分:数据类型
  1. 1

    数据类型简介

序列化和反序列化
  1. 1

    从 Lisp 看序列化

  2. 2

    一些关系理论

  3. 3

    属性值、数据域和数据类型

  4. 4

    一致性与数据类型行为

  5. 5

    挑战:生成日期序列

  6. 6

    解决方案回顾:生成日期序列(summary)

PostgreSQL 数据类型入门
  1. 1

    PostgreSQL 数据类型简介

  2. 2

    布尔值

  3. 3

    字符与文本

  4. 4

    服务器编码与客户端编码

  5. 5

    数字

  6. 6

    序列与串行伪数据类型

  7. 7

    UUID、Bytea 和 Bitstring

  8. 8

    日期/时间与时区

  9. 9

    时间间隔

  10. 10

    日期/时间处理与查询

  11. 11

    网络地址类型

  12. 12

    范围

非规范化数据类型
  1. 1

    非规范化数据类型简介

  2. 2

    数组

  3. 3

    GIN 索引

  4. 4

    复合类型

  5. 5

    XML

  6. 6

    JSON

  7. 7

    枚举

  8. 8

    挑战:JSON 数据类型

  9. 9

    解决方案回顾:JSON 数据类型

数据建模简介
  1. 1

    数据建模简介

对象关系映射与数据库建模工具
  1. 1

    对象关系映射

  2. 2

    数据库建模工具

  3. 3

    编写数据库模型

  4. 4

    建模示例

  5. 5

    测验:数据类型与数据建模

归一化
  1. 1

    数据结构与算法

  2. 2

    范式与异常

  3. 3

    归一化示例

  4. 4

    主键和代理键

  5. 5

    约束条件

实用案例:GeoNames
  1. 1

    加载 GeoNames

  2. 2

    特性

  3. 3

    国家

  4. 4

    行政分区

  5. 5

    地理位置定位

  6. 6

    索引与查找

  7. 7

    一些国家的样本

  8. 8

    挑战:创建一个直方图

  9. 9

    解决方案回顾:创建直方图

建模反模式
  1. 1

    实体-属性-值(EAV)

  2. 2

    每列多个值

  3. 3

    UUIDs

  4. 4

    测验:规范化、GeoNames 数据库与反模式

反规范化
  1. 1

    范式化简介

  2. 2

    过早优化与函数依赖的权衡

  3. 3

    PostgreSQL 中的反规范化

  4. 4

    物化视图

  5. 5

    历史表与审计追踪

  6. 6

    关于反规范化

  7. 7

    分区

  8. 8

    谨慎地进行反规范化

  9. 9

    挑战:生成数列

  10. 10

    解决方案回顾:生成数列

不仅限于SQL
  1. 1

    NoSQL 简介

  2. 2

    无模式设计在 PostgreSQL 中

  3. 3

    持久性权衡

  4. 4

    横向扩展

  5. 5

    测验:反规范化与NoSQL

数据操作与并发控制
  1. 1

    数据操作入门

另一个小型应用
  1. 1

    数据操作与并发控制入门

  2. 2

    数据操作与并发控制:插入

  3. 3

    数据操作与并发控制:更新

  4. 4

    数据操作与并发控制:删除

  5. 5

    挑战:数据操作

  6. 6

    解决方案回顾:数据操作

隔离与锁定
  1. 1

    隔离与锁机制简介

  2. 2

    事务与隔离

  3. 3

    并发更新与隔离

  4. 4

    并发建模

  5. 5

    将并发性付诸实践

SQL中的计算与缓存
  1. 1

    SQL中的计算与缓存简介

  2. 2

    视图

  3. 3

    物化视图

  4. 4

    测验:数据操作、并发、隔离与缓存

  5. 5

    挑战:创建一个视图

  6. 6

    解决方案回顾:创建视图

触发器
  1. 1

    触发器简介

  2. 2

    事务性事件驱动处理

  3. 3

    触发与计数器反模式

  4. 4

    修复行为

监听与通知
  1. 1

    监听与通知简介

  2. 2

    PostgreSQL 事件发布系统

  3. 3

    通知与缓存维护

  4. 4

    监听与通知的限制与支持

批量更新,MoMA收藏
  1. 1

    加载数据

  2. 2

    更新数据

  3. 3

    并发模式与冲突

  4. 4

    测验:触发器、通知功能与批量更新

PostgreSQL 扩展简介
  1. 1

    PostgreSQL 扩展简介

什么是 PostgreSQL 扩展?
  1. 1

    PostgreSQL 扩展

  2. 2

    PostgreSQL 扩展的组成与示例

  3. 3

    安装和使用 PostgreSQL 扩展

使用 hstore 进行变更审计
  1. 1

    hstore 是 PostgreSQL 中的一种键值对数据类型,用于存储非结构化的属性数据。它允许你将任意的键(字符串)与值(字符串)组合在一起,非常适合存储灵活的、可变的属性集合,例如用户自定义字段、配置信息或元数据。 使用 hstore,你可以像处理 JSON 一样操作键值对,但相比 JSON,hstore 在性能上更优,尤其适用于只需要简单键值存储的场景。它支持高效的查询和索引,例如通过 GIN 索引实现快速检索。 要使用 hstore,首先需要在数据库中启用扩展: ```sql CREATE EXTENSION IF NOT EXISTS hstore; ``` 然后可以创建包含 hstore 类型字段的表: ```sql CREATE TABLE products ( id SERIAL PRIMARY KEY, name TEXT, attributes HSTORE ); ``` 插入数据时,可以使用 `hstore` 函数或字面量语法: ```sql INSERT INTO products (name, attributes) VALUES ('Laptop', '"color" => "silver", "weight" => "2.5kg"'); ``` 查询时,可以通过键名访问值: ```sql SELECT name, attributes->'color' FROM products; ``` 还可以进行复杂的操作,如合并、删除键、检查键是否存在等: ```sql -- 合并两个 hstore 值 SELECT attributes || '"screen_size" => "15.6 inches"' FROM products; -- 删除键 SELECT attributes - 'weight' FROM products; -- 检查键是否存在 SELECT attributes ? 'color' FROM products; ``` hstore 适合用于需要灵活存储属性但又不希望引入完整 JSON 复杂性的场景,是处理半结构化数据的高效工具。

  2. 2

    使用触发器审计变更

  3. 3

    测试审计触发器

  4. 4

    从 hstore 回到普通记录

  5. 5

    测验:扩展与审计变更

百万歌曲数据集
  1. 1

    加载数据

  2. 2

    探索数据模型

使用三元语法进行拼写错误检测
  1. 1

    pg_trgm 扩展

  2. 2

    三元语法、相似性与搜索

  3. 3

    完成并建议歌曲标题

  4. 4

    三元语法索引

  5. 5

    挑战:查找词语相似度得分

  6. 6

    解决方案回顾:查找单词相似度得分

使用 intarray 进行标签的反规范化
  1. 1

    高级标签索引

  2. 2

    搜索与用户自定义标签

  3. 3

    测验:三元组与标签的反规范化

最流行的酒馆名称
  1. 1

    加载数据

  2. 2

    定位最近的酒吧

  3. 3

    寻找最近的酒吧

  4. 4

    酒吧与城市

  5. 5

    最流行的酒馆名称

使用 PostgreSQL 进行地理定位
  1. 1

    地理位置数据加载

  2. 2

    查找IP地址是否在范围内

  3. 3

    地理位置元数据

  4. 4

    实战:查找最近的酒吧

  5. 5

    挑战:查找最近的赛道

  6. 6

    解决方案回顾:查找最近的电路

使用 HyperLogLog 统计唯一用户数
  1. 1

    HyperLogLog 简介

  2. 2

    统计唯一推文访问者

  3. 3

    带有 HLL 的有损唯一计数

  4. 4

    获取访问次数并转换为唯一计数

  5. 5

    调度估算计算

  6. 6

    测验:地理位置与HyperLogLog

附录
  1. 1

    PostgreSQL:在本地机器上安装配置

  2. 2

    PostgreSQL 扩展:如何找到它们

  3. 3

    一些值得关注的扩展

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)