引言

PostgreSQL是功能强大的开源数据库。本文介绍其核心特性和应用。

一、基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 创建数据库
CREATE DATABASE mydb;

-- 创建表
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入数据
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');

-- 查询
SELECT * FROM users WHERE name LIKE 'A%';

二、JSONB类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- 创建表
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
attributes JSONB
);

-- 插入JSON数据
INSERT INTO products (name, attributes) VALUES
('Phone', '{"color": "black", "storage": "128GB", "price": 999}');

-- 查询JSON
SELECT * FROM products WHERE attributes->>'color' = 'black';
SELECT * FROM products WHERE attributes->'price' > '500';

-- 更新JSON
UPDATE products
SET attributes = jsonb_set(attributes, '{price}', '899')
WHERE id = 1;

三、全文搜索

1
2
3
4
5
6
-- 创建全文搜索索引
CREATE INDEX idx_content ON articles USING gin(to_tsvector('english', content));

-- 全文搜索
SELECT * FROM articles
WHERE to_tsvector('english', content) @@ to_tsquery('english', 'PostgreSQL');

四、窗口函数

1
2
3
4
5
6
7
8
9
-- 排名
SELECT name, salary,
RANK() OVER (ORDER BY salary DESC) as rank
FROM employees;

-- 累计求和
SELECT date, amount,
SUM(amount) OVER (ORDER BY date) as running_total
FROM transactions;

总结

PostgreSQL核心特性:

  1. JSONB支持:灵活的文档存储
  2. 全文搜索:强大的搜索功能
  3. 窗口函数:高级分析查询
  4. 扩展性:丰富的扩展插件

参考资料