psql -h localhost -p 5432 -U postgres -d pgdb
# 链接本地数据库
CREATE USER gitea WITH PASSWORD '---gitea---';
# 创建用户gitea并设置密码---gitea---
ALTER USER gitea WITH PASSWORD 'xxx@gitea---';
# 修改用户密码
CREATE DATABASE gitea OWNER gitea;
# 创建库gitea指定所有者
GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
# 授予用户所属库的所有权限
PostgreSQL 数据类型大全
1️⃣ 数值类型 (Numeric Types)
类型 描述 备注
smallint / int2 2 字节整数 -32,768 到 32,767
integer / int / int4 4 字节整数 -2,147,483,648 到 2,147,483,647
bigint / int8 8 字节整数 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
decimal(p,s) / numeric(p,s) 精确小数 p = 精度,s = 小数位数
real / float4 单精度浮点数 4 字节
double precision / float8 双精度浮点数 8 字节
serial / serial4 自动递增整数 包含 sequence
bigserial / serial8 自动递增大整数 包含 sequence
money 货币 本地化货币格式
2️⃣ 字符串类型 (Character Types)
类型 描述
char(n) / character(n) 固定长度字符串
varchar(n) / character varying(n) 可变长度字符串
text 可变长度字符串,无限制
citext 不区分大小写文本(扩展)
3️⃣ 布尔类型
类型 描述
boolean TRUE / FALSE / NULL
4️⃣ 日期与时间类型 (Date/Time Types)
类型 描述
date 年-月-日
time [ (p) ] 时:分:秒
timetz 带时区的时间
timestamp 日期时间
timestamptz 带时区的日期时间
interval 时间间隔
5️⃣ 枚举与复合类型
类型 描述
enum 枚举类型,可自定义值集合
composite 复合类型,包含多个字段
6️⃣ 网络类型
类型 描述
cidr IPv4 / IPv6 网络
inet 单个 IP 或网络
macaddr MAC 地址
7️⃣ JSON 类型
类型 描述
json JSON 文本
jsonb 二进制 JSON,支持索引查询
8️⃣ UUID 类型
类型 描述
uuid 128 位全局唯一标识符
9️⃣ 数组类型
任意类型可以定义数组:
int[]
text[]
jsonb[]
🔟 特殊类型
类型 描述
bytea 二进制数据
tsvector 文本向量,用于全文搜索
tsquery 查询向量,用于全文搜索
hstore 键值对类型(扩展)
xml XML 数据
pg_lsn 事务日志序列号
pg_snapshot 快照标识
1️⃣1️⃣ 空间数据类型 (PostGIS 扩展)
类型 描述
geometry 任意几何对象
geography 地理坐标对象
1️⃣2️⃣ 范围类型 (Range Types)
类型 描述
int4range 整数范围
int8range 大整数范围
numrange 数值范围
tsrange 时间戳范围(不含时区)
tstzrange 时间戳范围(含时区)
daterange 日期范围
1️⃣3️⃣ 基础几何类型(内置)
类型 描述
point 点 (x, y)
line 无限直线
lseg 线段
box 矩形
path 路径,可闭合或非闭合
polygon 多边形
circle 圆形
github https://github.com/dhamaniasad/awesome-postgres
postgresql-contrib 是 PostgreSQL 官方提供的一组附加模块/扩展包(contributed modules),包含很多实用功能,但不属于核心数据库引擎。安装后可以直接通过 CREATE EXTENSION 使用。它通常随 PostgreSQL 一起打包,但某些系统可能需要单独安装。
1️⃣ 常见内容
postgresql-contrib 包含多种类型的扩展,大致可以分为:
1. 文本处理 / 搜索
fuzzystrmatch:拼写距离(Levenshtein)、Soundex、Metaphone 等算法
pg_trgm:三元组相似度,支持 LIKE / ILIKE / SIMILARITY 查询加速
unaccent:去掉文本重音符号,用于全文搜索
2. 数据类型 / JSON / 键值
hstore:键值对存储,用于半结构化数据
uuid-ossp:生成 UUID (v1, v4 等)
cube:多维数据类型,常与 earthdistance 组合
3. 统计 / 性能
tablefunc:透视表 / crosstab
pg_stat_statements:查询统计与性能分析
4. 加密 / 安全
pgcrypto:加密函数、哈希、对称/非对称加密
5. 其他
dblink:跨数据库查询
file_fdw:文件外部表
postgres_fdw:PostgreSQL 外部表
pg_buffercache:缓存分析
PGroonga 是一个 PostgreSQL 的 全文搜索扩展,基于 Groonga 引擎实现。它在 PostgreSQL 中提供了高性能的全文搜索功能,尤其适合对 多语言文本(如中文、日文、韩文) 的搜索优化。
下面是详细介绍:
1️⃣ 基本信息
扩展名:pgroonga
官网:https://pgroonga.github.io/
主要用途:在 PostgreSQL 内进行全文搜索,支持多种语言和前缀搜索。
特点:
高速全文搜索。
支持部分匹配、前缀搜索、通配符搜索。
支持多语言分词。
与 PostgreSQL 索引系统(GIN/GiST)兼容。
2️⃣ 数据类型和索引
PGroonga 通过 索引扩展 提供搜索能力:
支持的数据类型:
text
varchar
char
json / jsonb
name 等字符串类型
索引类型:
CREATE INDEX pgroonga_index_name
ON table_name
USING pgroonga (column_name);
支持 USING pgroonga 的多种配置:
支持全文搜索 (text 类型)
支持部分匹配/前缀匹配
支持数组和 JSON 字段搜索
3️⃣ 功能示例
-- 创建表
CREATE TABLE articles (
id serial PRIMARY KEY,
title text,
body text
);
-- 创建 PGroonga 索引
CREATE INDEX pgroonga_index_title
ON articles
USING pgroonga (title);
-- 全文搜索
SELECT * FROM articles WHERE title &@ '検索';
说明:
&@ 是 PGroonga 的全文搜索操作符。
支持日文、中文等多字节字符分词。
4️⃣ 优势
对多语言文本搜索比 PostgreSQL 内置的 tsvector 更友好。
支持即时更新,无需重建索引(适合实时数据)。
对 JSON/数组字段搜索支持良好。
可以和 GIN/GiST 索引共存。
pgvector 是 PostgreSQL 的一个扩展,用于存储和查询 向量数据(vector embeddings),非常适合做 相似度搜索、推荐系统、向量搜索(Vector Search) 等应用。
下面是详细介绍:
1️⃣ 基本信息
扩展名:pgvector
官网:https://github.com/pgvector/pgvector
用途:存储向量(embedding),执行相似度搜索。
特点:
支持 vector 类型,长度可自定义。
内置相似度函数:欧氏距离(L2)、余弦相似度(cosine)、内积(inner product)。
可创建索引(如 IVFFlat、HNSW)加速向量搜索。
可与 PostgreSQL 原生功能结合(SQL、JSON、全文搜索等)。
2️⃣ 数据类型
-- 创建向量列
CREATE TABLE items (
id serial PRIMARY KEY,
embedding vector(1536) -- 向量维度 1536
);
vector(n) 表示向量维度为 n。
支持单行向量和数组/JSON 中的向量存储(通过函数转换)。
3️⃣ 索引类型
默认索引类型:ivfflat(倒排文件索引,近似最近邻搜索)
CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
lists 参数影响搜索精度和速度。
vector_l2_ops / vector_ip_ops / vector_cosine_ops 可指定距离计算方式。
4️⃣ 查询示例
-- 查找与给定向量最相似的 5 条记录
SELECT id, embedding <=> '[0.1,0.2,0.3,...]' AS distance
FROM items
ORDER BY embedding <=> '[0.1,0.2,0.3,...]'
LIMIT 5;
<=> 是欧氏距离(L2)操作符。
<#> 是余弦相似度,<#> 越小越相似。
<-> 是内积操作符。
5️⃣ 优势
针对向量检索优化,特别是 ML / AI embedding。
可直接在 PostgreSQL 里做向量搜索,无需外部向量数据库。
支持与 PostgreSQL 生态系统融合,如全文搜索、JSON、关系数据。