**PostgreSQL 快速参考指南**
**一、基础概念**
PostgreSQL 是一款强大的开源关系型数据库管理系统,以其高度的稳定性和丰富的功能集而备受推崇。它支持标准的SQL语法,并提供许多高级特性,如事务处理、多版本并发控制(MVCC)、复杂的查询以及多种数据类型。
**二、数据类型**
PostgreSQL 提供了多种内置数据类型,包括:
1. 整数类型(smallint, integer, bigint)
2. 浮点类型(real, double precision)
3. 字符串类型(char, varchar, text)
4. 时间日期类型(date, time, timestamp, interval)
5. 布尔类型(boolean)
6. 数组类型
7. JSON和JSONB类型
8. 哈希和数组类型
9. 其他特殊类型,如几何、UUID等
**三、查询语言SQL**
1. **SELECT语句**:用于检索数据,可以使用聚合函数(COUNT, AVG, SUM, MAX, MIN)和GROUP BY子句进行分组统计。
2. **INSERT语句**:插入新记录到表中。
3. **UPDATE语句**:修改现有记录。
4. **DELETE语句**:删除满足特定条件的记录。
5. **JOIN操作**:包括INNER JOIN, LEFT JOIN, RIGHT JOIN和FULL OUTER JOIN,用于合并多个表的数据。
6. **子查询**:在查询中嵌套查询,用于获取更复杂的结果。
**四、索引**
PostgreSQL 支持多种类型的索引,如B树、哈希、GiST和SP-GiST,用于提高查询速度。可以使用CREATE INDEX语句创建索引,且支持唯一性约束。
**五、视图**
视图是虚拟表,由查询结果组成。创建视图可以简化复杂查询,提供安全层(只读权限),并允许用户在不改变底层表结构的情况下更改数据呈现方式。
**六、函数与操作符**
1. **内置函数**:如现在时间(current_timestamp)、字符串拼接(||)和数学运算符(+,-,*,/)。
2. **聚合函数**:用于计算一组值的总和、平均值等。
3. **窗口函数**:如RANK(),ROW_NUMBER(),LEAD()和LAG(),在分组数据上执行计算。
4. **自定义函数**:可以通过CREATE FUNCTION来定义自己的函数,实现更复杂的逻辑。
**七、触发器与存储过程**
1. **触发器**:在特定数据库事件(如INSERT, UPDATE或DELETE)发生时自动执行的代码块。
2. **存储过程**:一组可重用的SQL语句,封装为一个命名实体,提高代码复用和性能。
**八、安全性与权限**
PostgreSQL 提供了细粒度的权限系统,包括用户、角色、对象权限等。GRANT和REVOKE语句用来分配和撤销权限。
**九、备份与恢复**
可以使用pg_dump和pg_restore工具进行数据库的备份和恢复,还支持流式复制和逻辑复制以实现高可用性。
**十、扩展与插件**
PostgreSQL 支持丰富的第三方扩展,如PostGIS(地理空间数据处理)、PL/pgSQL(过程语言)、pg_stat_statements(性能监控)等,极大地扩展了其功能。
以上只是 PostgreSQL 部分基础知识的速查概述,实际使用中还有更多高级特性,如分区表、物化视图、递归查询、临时表等,需要根据具体需求深入学习和探索。