Cockroachdb Sql

作者 cockroachdb6c96c6394a61无许可证4 个星标收录于 2026年10月8日更新于 2026年10月8日仓库2个月前更新

Use when writing, generating, or optimizing SQL for CockroachDB, designing CockroachDB schemas, or when the user asks about CockroachDB-specific SQL patterns, type mappings, and distributed database best practices. Also use when encountering CockroachDB anti-patterns like missing primary keys, sequential ID hotspots, or incorrect type usage.

AI 生成的概览

为 CockroachDB 生成并优化符合规范的 SQL,涵盖架构设计、查询与数据操作。

功能
该技能将自然语言请求转换为符合 CockroachDB 最佳实践的 SQL,覆盖架构设计、DML、查询模式、优化和运维任务。它会应用随附的规则参考,并在有数据库连接时用 EXPLAIN 验证生成的语句。输出包含带注释的 SQL、所用 CockroachDB 特性、性能注意事项以及引用的规则。
适用场景
适用于为 CockroachDB 编写、生成或优化 SQL、设计 CockroachDB 架构,或询问 CockroachDB 特有的 SQL 模式、类型映射和分布式数据库实践时。也适用于检查缺少主键、顺序 ID 热点或类型使用不当等反模式。
运行要求
仅为说明文档,不含脚本。无需数据库连接即可生成 SQL 和连接指引。使用连接时需要对目标数据库和表具备相应权限(SELECT、INSERT、UPDATE、DELETE 或管理员权限),并提供连接字符串、COCKROACH_URL 环境变量或 cockroach-cloud MCP 服务器之一;查询执行使用 cockroach CLI。

CockroachDB SQL Skill

Converts natural language questions into CockroachDB-compliant SQL queries, following CockroachDB best practices. Use it for schema design, writing queries and optimizing query.

How to Apply this Skill

  1. Connection Detection — already performed on skill invocation; reuse active connection.

  2. Parse Natural Language Intent

    • Identify the operation type (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, etc.)
  3. Context Gathering

    • Check for existing schema context in conversation
    • If connected to DB, query existing schema:
      • SHOW TABLES; to see existing tables
      • SHOW CREATE TABLE table_name; for existing structure
    • Ask clarifying questions if needed:
      • Table structure if not provided
      • Data types for columns
      • Index requirements
      • Multi-region needs
      • Performance characteristics
  4. Apply CockroachDB Rules

    • Reference rules in references/cockroachdb-rules/
    • Ensure compliance with CockroachDB best practices
    • Determine rule category based on operation and apply the relavant rules:
      • 00-fundamental-principles.md - Always apply these first
      • 01-schema-design.md - Table creation and structure
      • 02-dml-operations.md - Data modification
      • 03-query-patterns.md - Query construction
      • 04-optimization.md - Performance, Optimization and anti-patterns
      • 05-operational.md - Admin and maintenance
    • Validate against anti-patterns in 04-optimization.md
  5. Validate against DB(MANDATORY)

    • ALWAYS run EXPLAIN on every generated SQL query when connected to DB.
    • If EXPLAIN returns a parsing/syntax error, fix the query and re-run EXPLAIN until it passes.
    • Include the EXPLAIN output in the response.

Response Behavior

Initial Response

When skill is invoked:

  1. Check for an available connection so queries run against the right cluster:

    • Check if a connection string is provided in the prompt (postgresql://...).
      • If provided, use cockroach sql --url "<provided-url>" -e "SQL" to run queries. Do not use psql.
    • Else check the COCKROACH_URL environment variable (echo $COCKROACH_URL).
      • If set, use cockroach sql --url $COCKROACH_URL -e "SQL" to run queries. Do not use psql.
    • Else check for cockroach-cloud MCP server availability.
    • If none of these are available or it is unclear which cluster to use, ask the user before running anything.
  2. Focus exclusively on CockroachDB

  3. Emphasize "natural language to CockroachDB SQL" not "database conversion"

  4. Present CockroachDB-specific syntax even when a rule derives from PostgreSQL compatibility.

Output Format

  • Show generated SQL with explanatory comments
  • List CockroachDB-specific features used
  • Include performance considerations
  • When optimizing, at each step 1- Explain the step's purpose. 2- Execute the step and report the outcome. 3- Summarize all findings and actions taken.
  • Provide references used including the rules

Examples

Schema Design — UUID Primary Key (Avoid Hotspots)

sql
CREATE TABLE orders (  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),  customer_id UUID NOT NULL,  status STRING NOT NULL DEFAULT 'pending',  total DECIMAL(10,2) NOT NULL,  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),  INDEX idx_orders_customer (customer_id),  INDEX idx_orders_status_created (status, created_at DESC));

Batch Upsert with UNNEST

sql
UPSERT INTO inventory (sku, warehouse, quantity, updated_at)SELECT * FROM UNNEST(  ARRAY['SKU-001', 'SKU-002', 'SKU-003']::STRING[],  ARRAY['us-east', 'us-east', 'us-west']::STRING[],  ARRAY[100, 250, 75]::INT[],  ARRAY[now(), now(), now()]::TIMESTAMPTZ[]);

Keyset Pagination (Avoid OFFSET)

Use the previous page's last (created_at, id) as the cursor. In application code these are bound parameters; the literals here are placeholders.

sql
SELECT id, customer_id, created_atFROM ordersWHERE (created_at, id) > ('2025-01-01'::TIMESTAMPTZ, '00000000-0000-0000-0000-000000000000'::UUID)ORDER BY created_at, idLIMIT 50;

Supporting Documentation

  • references/cockroachdb-rules/ - CockroachDB SQL rules
  • references/EXAMPLES.md - SQL examples and patterns

来源与署名

来源:cockroachdb/claude-plugin位于skills/cockroachdb-query-and-schema-design/cockroachdb-sql提交6c96c63

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架