PostgreSQL 是一个功能强大的开源关系型数据库管理系统(RDBMS),以其稳定性、灵活性和对复杂查询的支持而闻名。以下是 PostgreSQL 的使用和关键知识点介绍:
1. 安装和配置
安装
- 
Linux :通过包管理器(如 apt或yum)安装。bashsudo apt update sudo apt install postgresql postgresql-contrib
- 
Windows/MacOS :使用 PostgreSQL 官网提供的安装包或工具(如 Homebrew)。 bashbrew install postgresql
启动与管理
- 
启动服务: bashsudo service postgresql start
- 
登录默认数据库: bashpsql -U postgres
- 
创建新数据库: sqlCREATE DATABASE mydb;
2. 基础操作
连接数据库
- 
使用 psql命令行工具:bashpsql -U username -d databasename
- 
通过编程语言(如 Python、Java、Node.js)连接,需安装相应驱动程序(如 psycopg2、JDBC)。 
常用 SQL 操作
- 
创建表 sqlCREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(150), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
- 
插入数据 sqlINSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
- 
查询数据 sqlSELECT * FROM users;
- 
更新数据 sqlUPDATE users SET email = 'newemail@example.com' WHERE id = 1;
- 
删除数据 sqlDELETE FROM users WHERE id = 1;
3. 高级功能
事务和并发控制
PostgreSQL 支持 ACID 事务:
            
            
              sql
              
              
            
          
          BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;- 若中途发生错误,可用 ROLLBACK撤销事务。
高级查询
- 
窗口函数 : sqlSELECT name, salary, RANK() OVER (ORDER BY salary DESC) AS rank FROM employees;
- 
CTE(公用表表达式) : sqlWITH cte AS ( SELECT id, name FROM users WHERE name LIKE 'A%' ) SELECT * FROM cte;
JSON 支持
PostgreSQL 提供强大的 JSON 和 JSONB 数据类型:
            
            
              sql
              
              
            
          
          CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    details JSONB
);
INSERT INTO orders (details) VALUES ('{"product": "Book", "price": 19.99}');
SELECT details->>'product' FROM orders;全文搜索
支持内置的全文搜索功能:
            
            
              sql
              
              
            
          
          SELECT to_tsvector('The quick brown fox') @@ to_tsquery('quick & fox');4. 性能优化
- 
索引: - 
创建索引以提高查询速度: sqlCREATE INDEX idx_users_name ON users(name);
- 
支持多种索引类型(B-tree、GIN、GiST、BRIN)。 
 
- 
- 
分区表: - 
将大表分为多个分区以提高性能: sqlCREATE TABLE orders_part ( id SERIAL, order_date DATE NOT NULL ) PARTITION BY RANGE (order_date);
 
- 
- 
缓存和配置调整: - 
使用 EXPLAIN分析查询计划:sqlEXPLAIN ANALYZE SELECT * FROM users WHERE name = 'Alice';
 
- 
5. 使用场景
- Web应用数据库:支持复杂的查询、事务性操作以及扩展性需求。
- 数据分析:支持 CTE、窗口函数和 JSON 数据处理。
- 时间序列数据:结合扩展(如 TimescaleDB),支持高效处理时间序列数据。
6. PostgreSQL 的扩展生态
- PostGIS:用于地理信息系统(GIS)的扩展。
- TimescaleDB:时间序列数据库扩展。
- pgAdmin:图形化数据库管理工具。
- Logical Replication:支持主从复制和逻辑复制。