引言
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 );
INSERT INTO products (name, attributes) VALUES ('Phone', '{"color": "black", "storage": "128GB", "price": 999}');
SELECT * FROM products WHERE attributes->>'color' = 'black'; SELECT * FROM products WHERE attributes->'price' > '500';
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核心特性:
- JSONB支持:灵活的文档存储
- 全文搜索:强大的搜索功能
- 窗口函数:高级分析查询
- 扩展性:丰富的扩展插件
参考资料