使用 Cursor AI 助手编写高效 SQL 查询指南

在日常开发和数据分析工作中,编写 SQL 查询是一项常见任务。借助 Cursor 这款强大的 AI 编码助手,我们可以通过自然语言对话的方式,快速生成准确的 SQL 查询语句。本文将介绍如何利用 Cursor AI 助手编写 SQL 查询的完整流程。

1. 让 Cursor 读取数据库表结构

首先,我们需要让 Cursor 了解我们的数据库结构。有几种方法可以实现:

方法一:直接上传模型文件

如果你使用 Django、Rails 等框架,可以直接上传 models 文件,让 Cursor 理解表结构:

# 例如上传Django的models.py文件
from django.db import models

class Project(models.Model):
    name = models.CharField(max_length=50)
    description = models.TextField()

class Task(models.Model):
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    completed = models.BooleanField(default=False)

方法二:提供数据库表结构描述

可以通过文本描述表结构:

数据库包含以下表:
1. projects(id, name, description, created_at)
2. tasks(id, project_id, title, completed, due_date)
3. users(id, username, email)
4. task_assignments(id, task_id, user_id)

方法三:上传数据库导出的 DDL 语句

CREATE TABLE projects (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  description TEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE tasks (
  id INT PRIMARY KEY AUTO_INCREMENT,
  project_id INT,
  title VARCHAR(100) NOT NULL,
  completed BOOLEAN DEFAULT FALSE,
  due_date DATE,
  FOREIGN KEY (project_id) REFERENCES projects(id)
);

2. 用自然语言提问

一旦 Cursor 了解了数据库结构,你可以用自然语言提出你的查询需求。例如:

"帮我写一个 SQL,查询 2025 年按月统计,新增接口用例最多的前 10 个项目"

"查找最近 30 天内完成任务最多的 5 名用户,并显示他们完成的任务数量"

"统计每个项目的任务完成率,按完成率降序排列"

自然语言提问的优势在于你可以专注于业务需求,而不是 SQL 语法细节。

3. 生成结果截图

图示:Cursor 根据自然语言需求生成 SQL 查询的界面截图

4. 生成的 SQL 解析与技巧分析

让我们看一个实际的例子。针对"查询 2025 年按月统计,新增接口用例最多的前 10 个项目"的需求,Cursor 生成了以下 SQL:

WITH monthly_stats AS (
    -- 统计每个项目每月新增的接口用例数量
    SELECT 
        p.id AS project_id,
        p.name AS project_name,
        DATE_FORMAT(aca.creatTime, '%Y-%m') AS month,
        COUNT(*) AS new_api_count
    FROM 
        api_test_automationcaseapi AS aca
    JOIN 
        api_test_automationtestcase AS atc ON aca.automationTestCase_id = atc.id
    JOIN 
        api_test_project AS p ON atc.project_id = p.id
    WHERE 
        YEAR(aca.creatTime) = 2025
    GROUP BY 
        p.id, p.name, DATE_FORMAT(aca.creatTime, '%Y-%m')
),
project_total AS (
    -- 计算每个项目2025年总的新增接口用例数量
    SELECT 
        project_id,
        project_name,
        SUM(new_api_count) AS total_new_api_count
    FROM 
        monthly_stats
    GROUP BY 
        project_id, project_name
),
top_projects AS (
    -- 选择新增接口用例总数量前10的项目
    SELECT 
        project_id,
        project_name,
        total_new_api_count
    FROM 
        project_total
    ORDER BY 
        total_new_api_count DESC
    LIMIT 10
)
-- 最终结果:按月份展示前10个项目的新增接口用例数量
SELECT 
    ms.month,
    ms.project_name,
    ms.new_api_count
FROM 
    monthly_stats ms
JOIN 
    top_projects tp ON ms.project_id = tp.project_id
ORDER BY 
    ms.month, ms.new_api_count DESC;

使用的 SQL 技巧分析:

  1. 公用表表达式 (CTE):使用WITH语句创建临时结果集,使查询逻辑分层清晰。

  2. 窗口分析法:分步骤统计数据,避免复杂的子查询嵌套。

  3. 日期函数:使用DATE_FORMATYEAR函数处理日期数据。

  4. 分组聚合:通过GROUP BY和聚合函数统计数量。

  5. 多表连接:使用JOIN连接多个表,建立数据关系。

  6. 排序与限制:使用ORDER BYLIMIT筛选前 N 条记录。

  7. 结果重组:将不同维度的数据关联,得到最终结果。

5. 在 Navicat 中执行结果

图示:在 Navicat 中执行生成的 SQL 查询并显示结果

执行结果显示了 2025 年每个月新增接口用例最多的前 10 个项目及其数量,数据按月份和新增数量排序,清晰展示了项目在各月的表现。

总结

使用 Cursor AI 助手编写 SQL 查询有以下优势:

  1. 效率提升:通过自然语言快速生成复杂 SQL,节省编写时间。

  2. 降低门槛:即使不精通 SQL 语法,也能获得高质量查询。

  3. 学习工具:通过分析 AI 生成的 SQL,学习高级查询技巧。

  4. 减少错误:AI 生成的 SQL 通常考虑了各种边界情况和优化。

  5. 专注业务:将精力集中在业务需求上,而非 SQL 语法细节。

无论你是数据库新手还是经验丰富的开发者,Cursor 都能帮助你更高效地处理数据查询任务。尝试使用自然语言与 AI 对话,体验智能 SQL 生成的便捷!


提示:这只是 cursor 众多能力的冰山一角,2025 你最该用的工具就是 cursor。


↙↙↙阅读原文可查看相关链接,并与作者交流