Install
openclaw skills install @thcjp/sql-master-tool-free面向独立开发者与AI Agent的SQL全栈工具免费版。覆盖SQLite、PostgreSQL、MySQL三大数据库的Schema设计、查询模式、索引策略、迁移脚本与备份恢复等核心能力,内置JSONB查询、CTE递归、窗口函数等高级查询模式示例,帮助用户在命令行下完成数据库开发与运维的绝大多数任务
openclaw skills install @thcjp/sql-master-tool-free本工具为独立开发者、运维与AI Agent提供覆盖SQLite、PostgreSQL、MySQL三大数据库的全栈SQL能力。免费版聚焦核心场景:Schema设计、查询编写、索引优化、迁移脚本、备份恢复,足以覆盖数据库开发与运维的绝大多数日常任务.
数据库开发与运维是一项涵盖面广的工程任务:从表结构设计、约束定义、索引规划,到复杂查询编写、性能调优、Schema演进、数据备份恢复,每个环节都需要规范的实践模式。本工具将这些经过实战检验的模式整合为一套完整工具集,避免在不同场景下重复查阅散落文档. 本工具以命令行原生操作为主,不依赖重量级ORM或可视化工具,便于在AI Agent工作流、自动化脚本与服务器环境中直接落地.
| 能力分类 | 说明 |
|---|---|
| Schema设计 | 建表、约束、外键、枚举类型、触发器模板 |
| 查询模式 | JOIN、聚合、CTE、窗口函数、递归查询 |
| 索引策略 | 单列、复合、覆盖、部分、表达式索引 |
| 迁移管理 | 手动迁移脚本规范与版本管理约定 |
| 备份恢复 | 全量备份、选择性备份、CSV导入导出 |
| 性能调优 | EXPLAIN解读、慢查询定位、索引补建 |
| JSON处理 | PostgreSQL JSONB与MySQL JSON查询模式 |
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置. |
用input_params参数进行配置.
处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作用config_options参数进行配置.
处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志.
config_options参数,支持修改/重置/导入操作用output_format参数进行配置.
处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志.
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:SQLite、全栈工具免费版、覆盖建表、备份核心能力、面向独立开发者与、Agent、三大数据库的、迁移脚本与备份恢、复等核心能力、窗口函数等高级查、询模式示例、帮助用户在命令行、下完成数据库开发、与运维的绝大多数等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.按业务需求设计含主键、外键、约束、索引的规范表结构,避免后期返工.
使用CTE、窗口函数、递归查询编写多步骤聚合报表,如月度营收增长、组织架构树遍历.
按版本化管理约定编写迁移脚本,确保表结构变更可追溯、可回滚.
通过EXPLAIN ANALYZE定位慢查询根因,识别Seq Scan、Nested Loop等信号,针对性补建索引或调整work_mem.
定期执行全量或选择性备份,在故障时快速恢复,保障数据安全.
以下场景SQL大师工具(免费版)不适合处理:
需要数据库操作、SQL查询、数据存储管理时使用。不适用于非本工具能力范围的需求.
# 创建并打开数据库
sqlite3 mydb.sqlite
# ...
# 导入CSV
sqlite3 mydb.sqlite ".mode csv" ".import data.csv mytable" "SELECT COUNT(*) FROM mytable;"
# ...
# 格式化输出
sqlite3 -header -column mydb.sqlite "SELECT * FROM users LIMIT 10;"
PostgreSQL连接与查询# 连接
psql -h localhost -U myuser -d mydb
# ...
# 执行查询
psql -c "SELECT NOW();" mydb
# ...
# 执行脚本文件
psql -f migration.sql mydb
-- 含外键、约束、索引的规范建表
CREATE TABLE orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
total REAL NOT NULL CHECK(total >= 0),
status TEXT NOT NULL DEFAULT 'pending'
CHECK(status IN ('pending','paid','shipped','cancelled')),
created_at TEXT DEFAULT (datetime('now'))
);
CREATE INDEX idx_orders_user_id ON orders(user_id);
CREATE INDEX idx_orders_status ON orders(status);
完整上手时间约60秒.
PostgreSQL UUID主键表设计CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
# ...
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
email TEXT NOT NULL,
name TEXT NOT NULL,
role TEXT NOT NULL DEFAULT 'user' CHECK(role IN ('user','admin')),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CONSTRAINT users_email_unique UNIQUE(email)
);
# ...
-- 自动更新updated_at触发器
CREATE OR REPLACE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
# ...
CREATE TRIGGER update_users_modtime
BEFORE UPDATE ON users
FOR EACH ROW EXECUTE FUNCTION update_modified_column();
PostgreSQL)-- 存储JSON
INSERT INTO orders (user_id, total, metadata)
VALUES ('...', 99.99, '{"source": "web", "items": [{"sku": "A1", "qty": 2}]}');
# ...
-- 查询JSON字段
SELECT * FROM orders WHERE metadata->>'source' = 'web';
SELECT * FROM orders WHERE metadata->'items' @> '[{"sku": "A1"}]';
# ...
-- 更新JSON字段
UPDATE orders SET metadata = jsonb_set(metadata, '{source}', '"mobile"') WHERE id = '...';
-- 月度营收与环比增长
WITH monthly_revenue AS (
SELECT DATE_TRUNC('month', created_at) AS month,
SUM(total) AS revenue
FROM orders WHERE status = 'paid'
GROUP BY 1
)
SELECT month, revenue,
LAG(revenue) OVER (ORDER BY month) AS prev_month,
ROUND((revenue - LAG(revenue) OVER (ORDER BY month)) /
NULLIF(LAG(revenue) OVER (ORDER BY month), 0) * 100, 1) AS growth_pct
FROM monthly_revenue ORDER BY month;
migrations/
001_create_users.sql
002_create_orders.sql
003_add_users_phone.sql
每个文件包含up方向,并在注释中记录down方向的操作,便于回滚.
-- 查询 WHERE user_id = ? AND created_at > ?
CREATE INDEX idx_orders ON orders(user_id, created_at);
-- 仅索引活跃订单,体积更小、速度更快
CREATE INDEX idx_orders_active ON orders(user_id, created_at)
WHERE status NOT IN ('delivered', 'cancelled');
在 PostgreSQL 中始终使用TIMESTAMPTZ存储时间,避免时区转换问题.
BEGIN;
INSERT INTO logs (...) VALUES (...);
INSERT INTO logs (...) VALUES (...);
COMMIT;
事务包裹批量操作既保证原子性,又可提升10-100倍性能.
PostgreSQL的JSONB和JSON有何区别?A:JSONB是二进制存储,支持索引(GIN)、查询更快,但写入略慢。JSON是文本存储,保留输入格式与重复键。生产环境推荐JSONB.
A:会。递归CTE必须有终止条件(如WHERE manager_id IS NULL作为锚点)。建议加LIMIT作为安全兜底,避免数据循环引用导致无限递归.
A:不一定。小表驱动大表的Nested Loop是高效的。但当两侧都是大表且行数很多时,Nested Loop成本高,应考虑改用Hash Join或调整work_mem.
PostgreSQL 一样吗?A:不同。MySQL用JSON_EXTRACT(metadata, '$.source')或简写metadata->>'$.source';PostgreSQL用metadata->>'source'。语法路径表示方式也不同.
A:不能直接修改。SQLite的ALTER TABLE能力有限,修改列类型需通过"建新表-复制数据-删旧表-重命名"四步法,并包裹在事务中保证安全.
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:sql-master-tool-pro
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| sqlite3 | CLI工具 | 必需 | 系统自带或官网下载 |
| psql | CLI工具 | 可选 | PostgreSQL 安装包 |
| mysql | CLI工具 | 可选 | MySQL 客户端安装包 |
| Python | 运行时 | 可选 | python.org 官方下载 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "SQL大师工具(免费版)处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "sql master"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}