如何利用ChatGPT自动生成SQL语句

36f29dc39cb33c343ea5aaa80a7fd2f5.jpeg

作为一名开发者,你可能已经使用过自然语言处理(NLP)及其可能彻底改变我们与技术互动的方式。由OpenAI提供支持的文本到SQL工具是一种强大的方法,可以从自然语言文本中生成SQL语句。在本博客文章中,我们将探讨七个创造性和不寻常的示例,展示如何使用ChatGPT生成SQL语句。

aefcfd8b7a0a7c99c7075ceb143fdcb4.png

1、修改现有查询语句

下面是一个示例,展示如何向Text-to-SQL提供一个现有的复杂SQL查询,并要求它进行修改:从现有的SQL查询中移除特定的结果

bcdf58d15623827b4c77137b2726faa0.png

提示词:

Take the attached SQL query and remove all results that happened in the first quarter of 2021.

SELECT product_name, SUM(quantity) AS total_quantity_sold FROM sales WHERE date BETWEEN '2021-01-01' AND '2021-12-31' GROUP BY product_name ORDER BY total_quantity_sold DESC;”

对应的翻译(使用中文也能返回对应的预期):

请修改以下SQL语句,删除2021年第一季度的数据,并返回其他季度的数据

SELECT product_name, SUM(quantity) AS total_quantity_sold FROM sales WHERE date BETWEEN '2021-01-01' AND '2021-12-31' GROUP BY product_name ORDER BY total_quantity_sold DESC;”

生成的SQL语句:

SELECT product_name, SUM(quantity) AS total_quantity_sold
FROM sales WHERE date BETWEEN '2021-04-01' AND '2021-12-31'
GROUP BY product_name
ORDER BY total_quantity_sold DESC;

在这个例子中,我们提供了一个现有的SQL查询,该查询检索2021年全年度每种产品的总销售量。Text-to-SQL修改了SQL语句,通过更改WHERE子句中的日期范围来排除2021年第一季度的结果。

2.不仅是英文!也可以使用中文

您可以将任何语言的自然语言输入生成 SQL 查询。以下是使用中文的例子

提示词:

展示每个分类中最近一个月的产品销售数量,同时显示分类的名称和最后一次销售的日期。

生成的SQL语句:

SELECT categories.category_name, COUNT(*) AS sales_count, MAX(orders.order_date) AS last_sale_date
FROM categories
JOIN products ON categories.category_id = products.category_id
JOIN order_details ON products.product_id = order_details.product_id
JOIN orders ON order_details.order_id = orders.order_id
WHERE orders.order_date BETWEEN DATEADD(MONTH, -1, GETDATE()) AND GETDATE()
GROUP BY categories.category_name

该示例演示了Text-to-SQL的灵活性,它能够从任何语言的自然语言输入生成SQL查询。虽然文本提示是用汉语语编写的,但Text-to-SQL仍能理解并将查询转换为有效的SQL语句。该查询检索最近一个月内每个产品分类别的销售数量,以及分类别名称和最后一次销售日期。查询连接categories、products、order_details和orders表,并使用聚合函数计算每个分类别的销售数量和最后一次销售日期。结果被过滤为仅包括最近一个月的订单,并按分类别名称分组。

3、在现有的SQL查询中添加过滤

提示词

Take the attached SQL query and add a filter to show only the top 10 customers by totalspending who live in California.

“SELECT customer_name, SUM(order_total) AS total_spent FROM orders GROUP BY customer_name ORDER BY total_spent DESC;”

对应的翻译(使用中文也能返回对应的预期):

请对附加的SQL查询添加筛选条件,仅显示在加州居住且消费总额排名前10位的客户。

“SELECT customer_name, SUM(order_total) AS total_spent FROM orders GROUP BY customer_name ORDER BY total_spent DESC;”

生成的SQL语句:

SELECT customer_name, SUM(order_total) 
AS total_spent FROM orders JOIN customers 
ON orders.customer_id = customers.customer_id 
WHERE state = 'California' 
GROUP BY customer_name 
ORDER BY total_spent DESC LIMIT 10;

本示例提供了一个现有的SQL查询,用于检索每个客户的消费总额。使用Text-to-SQL,我们可以修改SQL语句,添加一个筛选条件,仅显示住在加利福尼亚州的前10位客户。通过连接订单和客户表,并添加一个筛选条件,按州过滤,我们可以只检索住在加利福尼亚州的客户,然后通过消费总额将结果限制为前10位。

4、提供数据库结构,生成查询

提示词

“This is my Schema
CREATE TABLE customers (customer_id INT PRIMARY KEY,customer_name VARCHAR(50),address VARCHAR(100),city VARCHAR(50),state VARCHAR(50),zip_code VARCHAR(10)
);
CREATE TABLE orders (order_id INT PRIMARY KEY,order_date DATE,customer_id INT,order_total DECIMAL(10,2),FOREIGN KEY (customer_id) REFERENCES customers (customer_id)
);CREATE TABLE order_details (order_id INT,product_name VARCHAR(50),quantity INT,price DECIMAL(10,2),PRIMARY KEY (order_id, product_name),FOREIGN KEY (order_id) REFERENCES orders (order_id)
);Write a SQL statement that retrieves the customer name,
order date, product name, and quantity for all orders
where the order total is greater than $1,000 and
the product name contains the word "chair".

对应的翻译(使用中文也能返回对应的预期):

“这是我的数据库结构
CREATE TABLE customers (customer_id INT PRIMARY KEY,customer_name VARCHAR(50),address VARCHAR(100),city VARCHAR(50),state VARCHAR(50),zip_code VARCHAR(10)
);
CREATE TABLE orders (order_id INT PRIMARY KEY,order_date DATE,customer_id INT,order_total DECIMAL(10,2),FOREIGN KEY (customer_id) REFERENCES customers (customer_id)
);CREATE TABLE order_details (order_id INT,product_name VARCHAR(50),quantity INT,price DECIMAL(10,2),PRIMARY KEY (order_id, product_name),FOREIGN KEY (order_id) REFERENCES orders (order_id)
);编写一条SQL语句,检索所有订单中客户名称、订单日期、产品名称和数量,
其中订单总额大于$1,000且产品名称包含单词“chair”。

生成的SQL语句:

SELECT customers.customer_name, orders.order_date, order_details.product_name, order_details.quantity
FROM customers
JOIN orders ON customers.customer_id = orders.customer_id
JOIN order_details ON orders.order_id = order_details.order_id
WHERE orders.order_total > 1000 AND order_details.product_name LIKE '%chair%';

在这个例子中,我们提供了数据库模式,并要求Text-to-SQL编写一条SQL语句,检索所有订单中客户名称、订单日期、产品名称和数量,其中订单总额大于$1,000且产品名称包含单词“chair”。利用数据库模式,Text-to-SQL可以确定客户、订单和订单细节表之间的关系,并编写一条SQL语句,连接这些表并检索所需的数据。

5. 按日期范围过滤数据

提示词

Show me all orders between January 1, 2022 and March 1, 2022.

对应的翻译(使用中文也能返回对应的预期):

显示 2022 年 1 月 1 日至 2022 年 3 月 1 日之间的所有订单。

生成的SQL语句:

SELECT * FROM orders WHERE order_date BETWEEN '2022-01-01' AND '2022-03-01';

这个例子展示了如何使用Text-to-SQL生成一个按照特定日期范围筛选数据的SQL语句。在这个例子中,SQL语句检索2022年1月1日至2022年3月1日之间下的所有订单。订单表包含了每个订单的信息,包括订单日期、客户名称和产品信息。

6. 不仅仅是 SELECT - 还可以Update

提示词

Update the price of all products in the electronics category by 10%.

对应的翻译(使用中文也能返回对应的预期):

使用 SQL 更新电子产品分类是electronics的价格,并将价格提高10%。

生成的SQL语句:

UPDATE products SET price = price * 1.1 WHERE category = 'electronics';

这个例子展示了如何使用Text-to-SQL生成一个更新表中数据的SQL语句。在这个例子中,SQL语句更新电子产品分类中所有产品的价格,并提高价格的百分比为10%。通过在WHERE子句中指定分类,我们可以只针对需要更新的产品进行更新。

成用于报表查询使用的 SQL 查询语句

提示词

Generate a SQL query to retrieve data for a custom report that shows the total revenue for each product category in the past quarter,along with the number of orders and the average order value.The data should be sorted by total revenue in descending order.

对应的翻译(使用中文也能返回对应的预期):

请生成一条SQL查询语句,检索过去一个季度每个产品类别的总收入、订单数和平均订单价值,数据应按总收入降序排序,以用于自定义报告。

生成的SQL语句:

SELECT categories.category_name, 
SUM(order_details.quantity * order_details.price) AS total_revenue, 
COUNT(DISTINCT orders.order_id) AS num_orders, 
AVG(orders.order_total) AS avg_order_value
FROM categories 
JOIN products ON categories.category_id = products.category_id 
JOIN order_details ON products.product_id = order_details.product_id 
JOIN orders ON order_details.order_id = orders.order_id 
WHERE orders.order_date BETWEEN DATEADD(QUARTER, -1, GETDATE()) AND GETDATE()
GROUP BY categories.category_name 
ORDER BY total_revenue DESC;

在本示例中,我们请求Text-to-SQL生成一个SQL查询,以检索用于自定义报告的数据,该报告显示过去一个季度每个产品类别的总收入、订单数和平均订单价值。该查询连接categories、products、order_details和orders表,并使用聚合函数计算每个类别的总收入、订单数和平均订单价值。结果被过滤为仅包括过去季度的订单,并按总收入降序排序。这个查询可以用于生成一个自定义报告,帮助企业跟踪其按产品类别的销售情况。

8. 将其用于代码审查——了解复杂查询的功能

提示词

Explain in natural language what this SQL query does:
SELECT department_name, AVG(salary) AS avg_salary, COUNT(*) AS num_employees 
FROM employees 
JOIN departments ON employees.department_id = departments.department_id 
GROUP BY department_name 
HAVING AVG(salary) > 50000 AND COUNT(*) > 10 
ORDER BY avg_salary DESC;

对应的翻译(使用中文也能返回对应的预期):

请使用通俗易懂的语言解释以下SQL查询的作用:
SELECT department_name, AVG(salary) AS avg_salary, COUNT(*) AS num_employees 
FROM employees 
JOIN departments ON employees.department_id = departments.department_id 
GROUP BY department_name 
HAVING AVG(salary) > 50000 AND COUNT(*) > 10 
ORDER BY avg_salary DESC;

执行后的结果

这个 SQL 查询从 employees 和 departments 表中检索出员工的薪资和部门名称。它使用 JOIN 子句将两个表连接起来,以便将相应的员工分配到其所在的部门。使用 GROUP BY 子句按部门分组,计算每个部门的平均薪资和员工数量。使用 HAVING 子句过滤掉平均薪资小于 50000 和员工数量少于 10 的部门。最后,使用 ORDER BY 子句将结果按平均薪资降序排序,以便更容易看到薪资最高的部门。这个查询可以帮助管理层了解每个部门的平均薪资和规模,以便做出更好的管理决策。

结束

Text-to-SQL 是一种强大的工具,不仅可以将自然语言文本转换成 SQL 语句,还可以修改现有的 SQL 查询。

今天的分享就到这里,感谢你的阅读,希望能够帮助到你,文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。

原文:
https://www.eversql.com/7-unusual-uses-of-chat-gpt-for-text-to-sql-and-sql-queries/

作者:Oded Valin

非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/6401.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatGPT实战之「基于你的数据库,为你智能生成SQL」

原文:chatGPT实战之「基于你的数据库,为你智能生成SQL」 - 腾讯云开发者社区-腾讯云 chatGPT 为你生成 SQL 的落地效果演示 这几天很很多粉丝进行了深度交流,发现大家对于 SQL 学习或者编写都遇到过困难,因此勇哥突发奇想是否可以…

数据库ChatGPT插件来了,SQL使用体验进一步起飞

简介 基于 ChatGPT API 和 OpenMLDB 数据库实现的 openmldb-chatgpt-plugin 项目开源了,作为人类迄今为止最强AI模型之一(GPT4未开放API),集成了 ChatGPT 模型的数据库有多好用,下面将带大家体验一下。 原理 实现原…

AI编程 | 用ChatGPT提升SQL技能,用人工智能轻松学习数据库编程

ChatGPT能够完成许多酷炫的任务。其中的一项是进行代码编写。只要您提供正确的指示,ChatGPT就会为您完成任务。 ChatGPT是一个很好的SQL入门资源,如果你有学习SQL的需求。该工具能够帮助用户以自然语言方式创建SQL查询,解决潜在的编码问题&a…

ChatGPT画玫瑰花 | prompt

很明显,失败了!!!!!救命啊啊啊啊啊啊啊啊啊啊啊 和chatgpt-3.5完整的对话过程如下:http://t.csdn.cn/AeEae

Idea中的NexChatGPT如何使用

按照下面的截图一步一步来就可以的 打开settings 找到Plugins,搜索nex,出现NexChatGpt,点击Installed 安装好了之后点击右上方设置图标,点击HTTP Proxy Settings... 勾选Auto-detect proxy settings,点击OK 切记先点击Apply,在点击…

IntelliJ IDEA使用bito插件集成chatgpt

打开设置安装插件 打开IntelliJ IDEA编辑器,在菜单栏中选择“File” -> “Settings”->“Plugins”,选择“Marketplace”页面,输入“bito”,点击下载安装 注册账号 安装后,在ide右侧点击bito插件 填写邮箱接…

记录一次听了ChatGPT花言巧语导致idea无法启动的错误

原因: 如图 错误: 打开idea弹窗 解决: 在目录:C:\Users\当前用户名\AppData\Roaming\JetBrains\IntelliJIdea2021.1下找到idea64.exe.vmoptions文件打开 把之前添加的东西删掉:

idea可以集成chatGPT插件了 让编码效率加倍

打开idea搜索插件安装ChatGPT插件、 配置简单只需两步 登录后 点击创建一个key 复制其中的key值打开idea配置,搜索 配置key到官方源中 点击右侧开始聊天吧

IDEA 基本使用

1. IDEA刚开始使用时候,设置eclipse的快捷键,百度可以进行搜索 2. IDEA 中的几个窗口之间的跳转,快捷键ALT 对应的数字键,以及TODO和favorite的使用 3. IDEA中如果设置eclipse快键键后,那么 搜索常用的两个键 CTRL SHITF R (搜索…

IDEA安装及设置

官网下载:IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains以2017版为例,双击安装文件,如下所示:勾选如下两项,其它选项可根据自己需求勾选。点击Next ,直到安装完成,如下图所…

idea 内置集成chatGPT

1:打开idea,找到File>settings 2:找到pulgins>Marketplace,点击下载就好了 3:在最右侧,就能找到你的chatgpt了

IDEA集成chatGPT

IDEA集成chatGPT目前需要准备 1.爬墙的梯子 2.一个chatGPT的登录账号 一.GPT现在开放的是gpt-3.5-Turbo 下载插件 在Idea右侧可以看到chatGPTer 二.登录gpt网址 此链接:https://platform.openai.com/account/api-keys 获取Create key然后到Idea 找到这个工具 配置chatGPT的…

IntelliJ IDEA 的chatGPT插件 Bito -ChatGPT to write code, explain code,create tests

1、chatGPT爆火 最近你是否听说过“ChatGPT”这个词?它指的是一种基于深度学习技术的人工智能语言生成模型。自从2018年由OpenAI发布以来,ChatGPT就备受关注,甚至在2022年成为了全球最强AI模型之一。 2、chatGPT介绍 ChatGPT(G…

对话大模型中的事实错误:ChatGPT 的缺陷

©PaperWeekly 原创 作者 | 愁云 引言 随着 ChatGPT 的横空出世,智能对话大模型俨然已成为 AI 发展的焦点,更是在整个自然语言处理 (NLP) 领域掀起了一阵海啸。自去年席卷全球以来便引起各行各业空前的热度,数亿用户纷纷惊叹于 ChatGPT …

ChatGPT总是答非所问?如何使用chatgpt定义角色

一、📝 定义角色:ChatGPT 的角色设定 背景信息:提供详细、准确的背景信息和前提条件,以便 ChatGPT 提供有针对性的回答和建议 任务目标:清晰地描述希望 ChatGPT 完成的任务 输出要求:告知 ChatGPT 如何完…

华为的大模型终于来了,我的评价是:相当震撼

华为的大模型终于来了,我的评价是:相当震撼 原创 2023-07-08 10:21 差评 老被人说在大模型竞赛中掉队的华为,这次终于带着它的家伙事儿来了。 这不,在昨天的华为开发者大会 2023 上,华为就狠狠地秀了一把。 将近三个小…

乔布斯离开后的苹果 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 2 月 2 日,在 1913 年的今天,世界最大的火车站——纽约中央车站(Grand Central Terminal)正式启用。美国纽约中央…

2023 年云计算的增长点在何处?

作者 | 孙琦(万博智云 CTO 及联合创始人) 编辑 | 宋慧 出品 | CSDN 云计算 编者注: 2023 年已来,数字化转型仍然是 IT 的主旋律。不过,与以往一窝蜂、追求形式化的数字化不同,在疫情和日益增加的外部压力下…

人工智能发展月报(2023年1月)

本期导读 兔年伊始,人工智能业界已呈现出竞争加速之态势。不仅对话机器人ChatGPT为科技大厂们带来了技术与产品迭代的竞争压力,而且美国和欧盟达成的AI联手研发协议也为诸多国家带来了战略发展的竞争压力,2023年全球人工智能发展必将掀起新篇…

前瞻洞察|Prompt Learning(提示学习)——新的低资源场景克星

近年来,预训练语言模型已然成为自然语言处理(NLP)领域中备受瞩目的技术之一。预训练模型可以在大规模文本语料上进行自监督学习,从而获得丰富的语言学知识,并通过在下游任务上进行微调,实现出色的性能。Pro…