Content
42 Lessons • 0 Quizzes • 0 Challenges
第一部分:前言
- 1
课程简介
- 2
课程概述
- 3
所需架构
PostgreSQL 简介
- 1
为什么选择 PostgreSQL
- 2
一些有用的命令
- 3
测验:PostgreSQL入门
第二部分:结构化查询语言入门
- 1
SQL简介
- 2
使用 SQL
- 3
第一个使用场景
- 4
关于 SQL 注入的一点说明
- 5
PostgreSQL 协议:服务器端预处理语句
- 6
返回发现SQL
- 7
计算每周变化
- 8
SQL 编写规范
- 9
挑战:计算每两周的变化
- 10
解决方案回顾:计算每两周的变化
第三部分:编写SQL查询
- 1
SQL 查询编写入门
业务逻辑
- 1
数据库中的业务逻辑
- 2
应用代码中的业务逻辑
- 3
正确性
- 4
效率
- 5
存储过程:一种数据访问 API
- 6
测验:SQL 与业务逻辑
- 7
挑战:实现业务逻辑
- 8
解决方案回顾:实现业务逻辑
一个小型应用
- 1
一个小型应用简介
- 2
加载和查询数据库
- 3
用于 Chinook 数据库的 Python 应用程序
- 4
挑战:Top-N 事实手册条目
- 5
解决方案回顾:Top-N 事实手册条目
SQL REPL:交互式环境设置
- 1
SQL REPL 简介
- 2
开始使用 psql
- 3
查询重写与验证
- 4
挑战:在 PostgreSQL 中进行测试
- 5
解决方案回顾:PostgreSQL 中的测试
- 6
回归测试
- 7
挑战:PostgreSQL 中的回归测试
- 8
解决方案回顾:PostgreSQL 中的回归测试
PostgreSQL 中的索引
- 1
索引策略
- 2
索引访问方法
- 3
高级索引
- 4
测验:加载数据库、REPL、测试与索引
第四部分:SQL 工具箱
- 1
SQL 工具箱入门
SQL 工具
- 1
SQL 的子语言
- 2
SELECT 语句的结构
- 3
处理函数与数据源
- 4
连接与限制
SQL 中的输出管理
- 1
使用 Order By 进行排序
- 2
Top-N 排序:限制与分页
- 3
聚合
- 4
限制选定的组:Having 子句
- 5
分组集
- 6
公共表表达式
- 7
结果集操作
- 8
挑战:在SQL中管理输出
- 9
解决方案回顾:在 SQL 中管理输出
理解空值
- 1
三值逻辑
- 2
空值在应用程序中的应用
- 3
外连接会引入空值
- 4
测验:SQL 中的查询、查询结果及空值
- 5
挑战:理解空值
- 6
解决方案回顾:理解空值
窗口函数
- 1
窗口与帧
- 2
划分为不同的帧
- 3
使用窗口函数
关系与连接
- 1
理解关系
- 2
SQL连接类型
- 3
测验:窗口函数、关系与连接
第五部分:数据类型
- 1
数据类型简介
序列化和反序列化
- 1
从 Lisp 看序列化
- 2
一些关系理论
- 3
属性值、数据域和数据类型
- 4
一致性与数据类型行为
- 5
挑战:生成日期序列
- 6
解决方案回顾:生成日期序列(summary)
PostgreSQL 数据类型入门
- 1
PostgreSQL 数据类型简介
- 2
布尔值
- 3
字符与文本
- 4
服务器编码与客户端编码
- 5
数字
- 6
序列与串行伪数据类型
- 7
UUID、Bytea 和 Bitstring
- 8
日期/时间与时区
- 9
时间间隔
- 10
日期/时间处理与查询
- 11
网络地址类型
- 12
范围
非规范化数据类型
- 1
非规范化数据类型简介
- 2
数组
- 3
GIN 索引
- 4
复合类型
- 5
XML
- 6
JSON
- 7
枚举
- 8
挑战:JSON 数据类型
- 9
解决方案回顾:JSON 数据类型
数据建模简介
- 1
数据建模简介
对象关系映射与数据库建模工具
- 1
对象关系映射
- 2
数据库建模工具
- 3
编写数据库模型
- 4
建模示例
- 5
测验:数据类型与数据建模
归一化
- 1
数据结构与算法
- 2
范式与异常
- 3
归一化示例
- 4
主键和代理键
- 5
约束条件
实用案例:GeoNames
- 1
加载 GeoNames
- 2
特性
- 3
国家
- 4
行政分区
- 5
地理位置定位
- 6
索引与查找
- 7
一些国家的样本
- 8
挑战:创建一个直方图
- 9
解决方案回顾:创建直方图
建模反模式
- 1
实体-属性-值(EAV)
- 2
每列多个值
- 3
UUIDs
- 4
测验:规范化、GeoNames 数据库与反模式
反规范化
- 1
范式化简介
- 2
过早优化与函数依赖的权衡
- 3
PostgreSQL 中的反规范化
- 4
物化视图
- 5
历史表与审计追踪
- 6
关于反规范化
- 7
分区
- 8
谨慎地进行反规范化
- 9
挑战:生成数列
- 10
解决方案回顾:生成数列
不仅限于SQL
- 1
NoSQL 简介
- 2
无模式设计在 PostgreSQL 中
- 3
持久性权衡
- 4
横向扩展
- 5
测验:反规范化与NoSQL
数据操作与并发控制
- 1
数据操作入门
另一个小型应用
- 1
数据操作与并发控制入门
- 2
数据操作与并发控制:插入
- 3
数据操作与并发控制:更新
- 4
数据操作与并发控制:删除
- 5
挑战:数据操作
- 6
解决方案回顾:数据操作
隔离与锁定
- 1
隔离与锁机制简介
- 2
事务与隔离
- 3
并发更新与隔离
- 4
并发建模
- 5
将并发性付诸实践
SQL中的计算与缓存
- 1
SQL中的计算与缓存简介
- 2
视图
- 3
物化视图
- 4
测验:数据操作、并发、隔离与缓存
- 5
挑战:创建一个视图
- 6
解决方案回顾:创建视图
触发器
- 1
触发器简介
- 2
事务性事件驱动处理
- 3
触发与计数器反模式
- 4
修复行为
监听与通知
- 1
监听与通知简介
- 2
PostgreSQL 事件发布系统
- 3
通知与缓存维护
- 4
监听与通知的限制与支持
批量更新,MoMA收藏
- 1
加载数据
- 2
更新数据
- 3
并发模式与冲突
- 4
测验:触发器、通知功能与批量更新
PostgreSQL 扩展简介
- 1
PostgreSQL 扩展简介
什么是 PostgreSQL 扩展?
- 1
PostgreSQL 扩展
- 2
PostgreSQL 扩展的组成与示例
- 3
安装和使用 PostgreSQL 扩展
使用 hstore 进行变更审计
- 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
使用触发器审计变更
- 3
测试审计触发器
- 4
从 hstore 回到普通记录
- 5
测验:扩展与审计变更
百万歌曲数据集
- 1
加载数据
- 2
探索数据模型
使用三元语法进行拼写错误检测
- 1
pg_trgm 扩展
- 2
三元语法、相似性与搜索
- 3
完成并建议歌曲标题
- 4
三元语法索引
- 5
挑战:查找词语相似度得分
- 6
解决方案回顾:查找单词相似度得分
使用 intarray 进行标签的反规范化
- 1
高级标签索引
- 2
搜索与用户自定义标签
- 3
测验:三元组与标签的反规范化
最流行的酒馆名称
- 1
加载数据
- 2
定位最近的酒吧
- 3
寻找最近的酒吧
- 4
酒吧与城市
- 5
最流行的酒馆名称
使用 PostgreSQL 进行地理定位
- 1
地理位置数据加载
- 2
查找IP地址是否在范围内
- 3
地理位置元数据
- 4
实战:查找最近的酒吧
- 5
挑战:查找最近的赛道
- 6
解决方案回顾:查找最近的电路
使用 HyperLogLog 统计唯一用户数
- 1
HyperLogLog 简介
- 2
统计唯一推文访问者
- 3
带有 HLL 的有损唯一计数
- 4
获取访问次数并转换为唯一计数
- 5
调度估算计算
- 6
测验:地理位置与HyperLogLog
附录
- 1
PostgreSQL:在本地机器上安装配置
- 2
PostgreSQL 扩展:如何找到它们
- 3
一些值得关注的扩展
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Course Author:Anonymous User