在日常开发和数据分析工作中,编写 SQL 查询是一项常见任务。借助 Cursor 这款强大的 AI 编码助手,我们可以通过自然语言对话的方式,快速生成准确的 SQL 查询语句。本文将介绍如何利用 Cursor AI 助手编写 SQL 查询的完整流程。
首先,我们需要让 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)
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)
);
一旦 Cursor 了解了数据库结构,你可以用自然语言提出你的查询需求。例如:
"帮我写一个 SQL,查询 2025 年按月统计,新增接口用例最多的前 10 个项目"
"查找最近 30 天内完成任务最多的 5 名用户,并显示他们完成的任务数量"
"统计每个项目的任务完成率,按完成率降序排列"
自然语言提问的优势在于你可以专注于业务需求,而不是 SQL 语法细节。
图示:Cursor 根据自然语言需求生成 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;
公用表表达式 (CTE):使用WITH
语句创建临时结果集,使查询逻辑分层清晰。
窗口分析法:分步骤统计数据,避免复杂的子查询嵌套。
日期函数:使用DATE_FORMAT
和YEAR
函数处理日期数据。
分组聚合:通过GROUP BY
和聚合函数统计数量。
多表连接:使用JOIN
连接多个表,建立数据关系。
排序与限制:使用ORDER BY
和LIMIT
筛选前 N 条记录。
结果重组:将不同维度的数据关联,得到最终结果。
图示:在 Navicat 中执行生成的 SQL 查询并显示结果
执行结果显示了 2025 年每个月新增接口用例最多的前 10 个项目及其数量,数据按月份和新增数量排序,清晰展示了项目在各月的表现。
使用 Cursor AI 助手编写 SQL 查询有以下优势:
效率提升:通过自然语言快速生成复杂 SQL,节省编写时间。
降低门槛:即使不精通 SQL 语法,也能获得高质量查询。
学习工具:通过分析 AI 生成的 SQL,学习高级查询技巧。
减少错误:AI 生成的 SQL 通常考虑了各种边界情况和优化。
专注业务:将精力集中在业务需求上,而非 SQL 语法细节。
无论你是数据库新手还是经验丰富的开发者,Cursor 都能帮助你更高效地处理数据查询任务。尝试使用自然语言与 AI 对话,体验智能 SQL 生成的便捷!
提示:这只是 cursor 众多能力的冰山一角,2025 你最该用的工具就是 cursor。