# Database

> 数据库脚本与操作规范。脚本放在 db_scripts 目录，遵循查询优化、事务、安全等实践。

- Skill: `mijunri/database` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mijunri/database`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mijunri/database/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: mijunri (https://skillmd.com/u/mijunri)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/mijunri/database

---


# 数据库 Skill

处理数据库相关操作时，脚本统一放在 `db_scripts/` 目录，并遵循以下实践。

## 脚本位置

- 所有数据库脚本（迁移、初始化、修复、查询等）置于 `db_scripts/`
- 可按子目录组织，如 `db_scripts/migrations/`、`db_scripts/init/` 等

## 命名规范

- 格式：`YYYYMMDD_功能描述.扩展名`，日期开头，下划线后接功能
- 示例：`20250213_add_user_table.sql`、`20250213_fix_order_status.sql`

## 查询优化

1. **避免 N+1** - 使用 JOIN、批量查询或预加载（eager load）
2. **索引** - 为常查字段、WHERE/JOIN 条件建立合适索引
3. **分页** - 大数据集使用 limit/offset 或游标分页
4. **避免 SELECT \*** - 只选取需要的字段

## 事务与一致性

- 多步写操作放在事务中
- 注意隔离级别和死锁
- 大事务考虑拆分为小批次

## 安全

- **参数化查询** - 始终使用预处理/占位符，禁止拼接 SQL
- 敏感数据加密存储
- 连接串、凭据从 `.env` 或 `dev.env` 读取，不入库、不硬编码

## 迁移脚本

- 可逆的迁移脚本
- 大表变更考虑在线迁移、分批执行
- 先加新结构，再迁数据，最后删旧结构

