当前位置: 首页 > news >正文

PostgreSQL CRUD 操作指南

PostgreSQL CRUD 操作指南

连接数据库

-- 连接到特定数据库
psql -U postgres -d xianxia-- 列出所有数据库
\l-- 切换数据库
\c xianxia-- 列出所有表
\dt-- 查看表结构
\d table_name

基本 CRUD 操作

CREATE(创建)

-- 创建新表
CREATE TABLE users (id SERIAL PRIMARY KEY,username VARCHAR(50) UNIQUE NOT NULL,email VARCHAR(100) UNIQUE NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 插入单条数据
INSERT INTO users (username, email) 
VALUES ('admin', 'admin@example.com');-- 插入多条数据
INSERT INTO users (username, email) 
VALUES ('user1', 'user1@example.com'),('user2', 'user2@example.com');

READ(查询)

-- 查询所有列
SELECT * FROM users;-- 查询特定列
SELECT username, email FROM users;-- 条件查询
SELECT * FROM users WHERE username = 'admin';-- 排序
SELECT * FROM users ORDER BY created_at DESC;-- 分页查询
SELECT * FROM users 
LIMIT 10 OFFSET 0;  -- 第一页,每页10条-- 模糊查询
SELECT * FROM users 
WHERE username LIKE '%admin%';-- 联表查询
SELECT u.username, p.title 
FROM users u 
JOIN posts p ON u.id = p.user_id;

UPDATE(更新)

-- 更新单个字段
UPDATE users 
SET email = 'newemail@example.com' 
WHERE username = 'admin';-- 更新多个字段
UPDATE users 
SET email = 'newemail@example.com',username = 'newadmin'
WHERE id = 1;-- 批量更新
UPDATE users 
SET status = 'inactive' 
WHERE last_login < NOW() - INTERVAL '30 days';

DELETE(删除)

-- 删除特定记录
DELETE FROM users 
WHERE username = 'admin';-- 删除所有记录
DELETE FROM users;-- 截断表(更快的清空表方式)
TRUNCATE TABLE users;-- 删除表
DROP TABLE users;

高级操作

事务处理

-- 开始事务
BEGIN;-- 执行操作
INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com');
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;-- 提交事务
COMMIT;-- 回滚事务
ROLLBACK;

索引操作

-- 创建索引
CREATE INDEX idx_username ON users(username);-- 创建唯一索引
CREATE UNIQUE INDEX idx_email ON users(email);-- 删除索引
DROP INDEX idx_username;

常用函数

-- 计数
SELECT COUNT(*) FROM users;-- 分组统计
SELECT status, COUNT(*) 
FROM users 
GROUP BY status;-- 聚合函数
SELECT AVG(age) as average_age,MAX(age) as max_age,MIN(age) as min_age
FROM users;

实用技巧

备份和恢复

# 备份数据库
pg_dump -U postgres xianxia > backup.sql# 恢复数据库
psql -U postgres xianxia < backup.sql

性能优化

  1. 使用 EXPLAIN 分析查询
EXPLAIN ANALYZE 
SELECT * FROM users WHERE email = 'admin@example.com';
  1. 创建合适的索引
-- 为经常查询的字段创建索引
CREATE INDEX idx_email ON users(email);
  1. 定期维护
-- 清理和分析数据库
VACUUM ANALYZE users;

常见问题解决

  1. 连接问题
-- 查看当前连接
SELECT * FROM pg_stat_activity;-- 终止特定连接
SELECT pg_terminate_backend(pid);
  1. 权限问题
-- 授予权限
GRANT ALL PRIVILEGES ON DATABASE xianxia TO username;-- 撤销权限
REVOKE ALL PRIVILEGES ON DATABASE xianxia FROM username;

最佳实践

  1. 总是使用事务来保证数据一致性
  2. 为频繁查询的字段创建索引
  3. 定期进行数据库维护和备份
  4. 使用参数化查询防止SQL注入
  5. 适当使用视图简化复杂查询
  6. 遵循命名规范
  7. 为表添加适当的约束
http://www.lryc.cn/news/509574.html

相关文章:

  • 4X4规模S盒分量布尔函数计算工具(附各大常见分组加密算法S盒查找表和其对应分量布尔函数截图)
  • 模拟——郑益慧_笔记1_绪论
  • 金融租赁系统的发展与全球化战略实施探讨
  • vue3入门教程:计算属性
  • Docker怎么关闭容器开机自启,批量好几个容器一起操作?
  • shell脚本(全)
  • 华为手机建议使用adb卸载的app
  • 论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
  • Java基础(Json和Java对象)
  • Linux 中检查 Apache Web Server (httpd) 正常运行时间的 4 种方法
  • Linux驱动开发--字符设备驱动开发
  • MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式)
  • 一文彻底拿捏DevEco Studio的使用小技巧
  • R9000P键盘失灵解决办法
  • 【Linux之Shell脚本实战】编写简单计算器shell脚本
  • 【0x001D】HCI_Read_Remote_Version_Information命令详解
  • 秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行
  • python中使用selenium执行组合快捷键ctrl+v不生效问题
  • 大语言模型中的Agent;常见的Agent开发工具或框架
  • VSCode 性能优化指南:提高编码效率,减少资源占用
  • 深入理解C++ 容器类
  • 优化 invite_codes 表的 SQL 创建语句
  • springboot容器无法获取@Autowired对象,报null对象空指针问题的解决方式
  • 服务器数据恢复—Lustre分布式文件系统下服务器节点进水的数据恢复案例
  • 由于这些关键原因,我总是手边有一台虚拟机
  • word无法创建工作文件,检查临时环境变量。
  • 照亮技术传播之路:构建卓越的技术文档
  • 20241225在ubuntu20.04.5下监控SSD
  • Flink定时器
  • 《算力互联互通标准体系1.0》发布,为算力互联成网发展提供指导框架