# SQL

> Design and change relational schemas, queries, transactions, migrations, and data access safely.

- Skill: `h1d3r/sql` (Agent Skill)
- Install (CLI): `npx skillmds@latest add h1d3r/sql`
- Raw SKILL.md: https://api.skillmd.com/api/skills/h1d3r/sql/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: H1d3r (https://skillmd.com/u/h1d3r)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/h1d3r/sql

---


# SQL / Database Skill（for Agents）

## 适用场景
- SQL 模式设计、查询优化、索引调整、迁移脚本、数据一致性问题
- 与应用层联调涉及查询性能和数据安全的任务

## 核心原则

1. **先读模型与索引**：先确认主键、外键、唯一性和索引策略，再改 SQL。
2. **最小影响**：尽量以只读分析或增量迁移方式提交，降低线上风险。
3. **正确性优先**：任何优化都要保证幂等、事务安全和回滚可行。

## 强制执行清单

- DDL/DML 改动必须明确迁移方向（Up/Down 或回滚方案）。
- 变更涉及字段/约束时检查应用层兼容性（序列化/ORM 映射）。
- 使用参数化查询，避免拼接 SQL。
- 大查询加入索引评估：过滤列、排序列、连接列是否可被命中。
- 敏感数据访问添加最小权限和审计字段（creator/operator/updated_at）。

## 推荐实践

- 复杂查询先 `EXPLAIN ANALYZE` 验证执行计划再改结构。
- 统计列与时间范围查询优先复合索引与覆盖索引。
- 热更新类变更优先采用蓝绿 / 滚动策略，避免一次性锁表。
- 逻辑删除字段与历史表写清生命周期，不与主键索引混淆。

## 常用质量门禁

- `EXPLAIN` / `EXPLAIN ANALYZE`（或数据库对应执行计划工具）
- 迁移脚本 dry-run / 测试环境回放
- 慢查询日志复核（阈值由项目约定）
- 数据一致性检查（计数核对、校验和或抽样对账）

## 反模式（避免）

- 在高频路径使用无索引 `LIKE '%xxx'` 全表扫描。
- `SELECT *` 在 API/导出路径直接暴露多余字段。
- 无事务批量写导致部分成功部分失败。
- 在生产直接执行大表 `ALTER` 而未评估锁与回滚时间。

## 与仓库冲突时的优先级

- 以数据库类型版本、迁移框架与 CI 数据库测试约束为准。
- 与本文件冲突时，以项目实际变更审批与回滚策略为准。

