mcpField
S
surrealql

surrealql

github.com/surrealdb数据与数据库28713 次安装4 周前更新
代码仓库

关于 surrealql

surrealql 是用于编写和修改 SurrealDB 查询的技能,面向开发者。它涵盖数据查询、模式管理、其他查询语言转换,并强调适配版本相关语法。

主要功能

  1. 01编写和排查查询
  2. 02设计和管理模式
  3. 03转换其他语言的查询
  4. 04采用最新稳定版语法
  5. 05使用 CLI 验证查询
  6. 06格式化查询文件

适用场景

  1. 01编写 SurrealDB 数据查询
  2. 02创建或更新数据库模式
  3. 03转换其他查询语言编写的查询
  4. 04检查并格式化 `.surql` 文件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/surrealdb/agent-skills --skill surrealql

安装后在 Claude Code 中输入/surrealql确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
querying.md
schema.md
values.md

详细介绍

SurrealQL

用于编写和修改 SurrealQL 查询,以便与 SurrealDB 数据库交互的技能。

SurrealQL 是 SurrealDB 的官方查询语言。这是一种现代、灵活且强大的查询语言,易于学习和使用。

何时使用此技能

在以下情况下,请参考这些指南:

  • 编写、修改或排查 SurrealQL 查询
  • 设计或管理架构
  • 将其他查询语言转换为 SurrealQL

版本与文档

始终以最新的稳定版 SurrealDB 为目标。 SurrealQL 会在主要版本之间演进,旧版本(例如 SurrealDB 2.x)的语法是查询错误或无法通过验证的常见原因。除非用户明确要求使用旧版本,否则请生成当前的(3.x)语法。

生成与版本相关的语法前,请确定当前使用的版本:

  • 如果已安装 SurrealDB CLI,请运行 surreal version。

  • 否则,最新发布的版本会以纯字符串形式发布在 https://download.surrealdb.com(例如 v3.1.4):

    curl -s https://download.surrealdb.com
    

https://surrealdb.com/docs 始终记录最新稳定版的文档——请将其视为当前语法的权威来源。如果不确定某个函数或形式是否仍适用(例如 type::* 辅助函数以及记录 ID 的构造方式),请查阅当前文档予以确认,而不要假定旧有行为仍然适用。

规则与约定

  • SurrealQL 不是 ANSI-SQL。切勿假定适用于其他数据库的 SQL 知识也适用。请始终参考下方示例或 https://surrealdb.com/docs 上的文档,了解准确的语法和行为。
  • 将 SurrealQL 存储在文件中时,文件扩展名应为 .surql。
  • SurrealQL 是一种相对较新的语言,会在不同版本之间发生变化。默认使用最新的 SurrealDB 版本(参见版本与文档),并参考 https://surrealdb.com/docs 获取最新的语法。

语句

查询语句
语句用途
SELECT查询记录、遍历图、聚合数据
CREATE创建新记录(如果记录已存在则报错)
INSERT插入一条或多条记录或图边;支持 ON DUPLICATE KEY UPDATE
UPDATE更新现有记录(如果记录不存在则不执行任何操作)
UPSERT插入记录;如果记录已存在则更新
DELETE删除记录或图边
RELATE在记录之间创建图边
LIVE SELECT实时流式传输表中的更改
KILL取消正在运行的 LIVE SELECT 查询
LET为参数赋值
RETURN从代码块或函数返回值
架构与资源语句
语句用途
DEFINE NAMESPACE定义命名空间
DEFINE DATABASE定义数据库
DEFINE TABLE定义表(完整架构、无架构或视图)
DEFINE FIELD定义字段的类型、默认值和断言
DEFINE INDEX定义索引(唯一、搜索、向量)
DEFINE EVENT定义表上的事件触发器
DEFINE FUNCTION定义自定义函数
DEFINE ANALYZER定义搜索分析器
DEFINE ACCESS定义身份验证访问方式(Bearer、JWT、Record)
DEFINE API定义 API 端点
DEFINE BUCKET定义存储桶
DEFINE CONFIG定义配置
DEFINE MODULE定义 Surrealism 扩展模块
DEFINE PARAM定义全局参数
DEFINE SEQUENCE定义自增序列
DEFINE USER定义系统用户
ALTER修改现有资源定义
REMOVE移除任何已定义的资源
REBUILD重建索引
ACCESS管理访问授权
USE切换到其他命名空间或数据库
INFO检查资源的定义
SHOW查看表或数据库的变更流
控制流语句
语句用途
BEGIN / COMMIT开始并提交手动事务
CANCEL取消事务
IF / ELSE条件执行
FOR遍历值
BREAK提前退出 FOR 循环
CONTINUE跳到 FOR 循环的下一次迭代
THROW取消执行并返回错误
SLEEP暂停执行一段时间

参考资料

有关详细的查询模式(筛选、图遍历、聚合、子查询),请参阅 references/querying.md。

有关架构管理模式(表、字段、索引、事件、访问),请参阅 references/schema.md。

有关 SurrealDB 记录中可存储的值的详细信息,请参阅 references/values.md。

验证

生成 SurrealQL 查询或修改现有查询时,如果可以使用 SurrealDB CLI,则应始终使用它进行验证。验证可能会因版本差异而失败,此时可以通过 surreal version 获取 SurrealDB CLI 版本。只能对完整查询或值进行验证,不能验证部分语句或语句片段。

用法
# Validate a single file:
surreal validate query.surql

# Validate glob pattern of files:
surreal validate queries/*.surql

# Validate from stdin (available since SurrealDB v3.1.0):
echo "SELECT * FROM person WHERE age > 18" | surreal validate --stdin

格式化

生成 SurrealQL 查询或 SQON 值时,如果有类似 NodeJS 的运行时,可以考虑使用 surqlfmt CLI 工具进行格式化。以下情况应始终进行格式化:

  • 向用户展示查询时
  • 生成迁移文件时
  • 编写 .surql 文件时
用法
# Format a file and print to stdout:
npx @surrealdb/surql-fmt query.surql

# Format files in-place:
npx @surrealdb/surql-fmt --write migrations/*.surql

# Check if files are already formatted (exits with code 1 if not):
npx @surrealdb/surql-fmt --check src/**/*.surql

# Format from stdin:
echo "SELECT * FROM person WHERE age>18" | npx @surrealdb/surql-fmt --stdin

评论

支持 Markdown