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

这篇具有很好参考价值的文章主要介绍了如何利用ChatGPT自动生成SQL语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

1、修改现有查询语句

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

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

提示词:

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

非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正文章来源地址https://www.toymoban.com/news/detail-428791.html

到了这里,关于如何利用ChatGPT自动生成SQL语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件测试/测试开发丨利用ChatGPT自动生成测试用例思维导图

    公众号搜索:TestingStudio 霍格沃兹测试开发的干货都很硬核 在写测试用例的时候,你是不是经常会遇到以下难题: 缺少边界测试用例: 在编写测试用例时,有时候会忽略某些边界情况,这可能导致无法发现软件中的潜在问题。 无法覆盖所有的场景: 测试用例的数量可能非常

    2024年02月07日
    浏览(41)
  • 如何利用Mybatis-Plus自动生成代码(超详细注解)

    1、简介 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性

    2024年02月01日
    浏览(30)
  • 【AI 大模型】如何利用 LLM 和智能问答 BI 自然语言自动生成智能报表 ?

    目录 如何利用LLM大模型和智能问答BI生成智能报表,以提高企业的决策效率? 前言

    2024年02月10日
    浏览(39)
  • certbot生成证书,配置nginx,利用脚本自动续期

    踩了大量坑,做下记录。以下适用于博主本人,但是未必会适用于所有人   在生成泛域名证书时,我们需要手动在DNS解析中配置TXT,然而续费命令 renew 无法去完成我们手动配置TXT的过程,需要我们手动配置,所以会报错。   我们需要用到一个DNS插件,这样我们就不需要

    2023年04月15日
    浏览(40)
  • ChatGPT自动生成思维导图

                                                                                      🍏🍐🍊🍑🍒🍓🫐🥑🍋🍉                                                                               

    2024年02月06日
    浏览(32)
  • 什么工具能自动生成SQL 这么牛

    哈喽,大家好。 程序猿和产品的爱恨情仇:谁也离不开谁,谁也看对方不顺眼。一个是下单的,另一个是做饭的,下单的嫌弃做饭的做的慢、不好吃还不按要求做,做饭的嫌弃下单的钱少事多要求高。┓( ´∀` )┏ 小北最近也是被一个需求恶心到,又不能改又不能砍,写起来

    2023年04月27日
    浏览(28)
  • ChatGPT专业应用:采访大纲自动生成

    正文共  429 字,阅读大约需要  2  分钟 品牌公关人员/记者群体必备技巧,您将在2分钟后获得以下超能力: 1.专业性采访大纲速成 2.多样性采访提问 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人  |  麻辣酱   编辑者  |   R amy 记者的敏

    2024年02月11日
    浏览(32)
  • ChatGPT专业应用:自动生成课程简介

    正文共  704  字,阅读大约需要  4  分钟 课程编辑/产品运营必备技巧,您将在4分钟后获得以下超能力: 1、自动生成课程简介 2、快速优化格式并附有丰富的emoji Beezy评级 :A级 *经过寻找和一段时间的学习,一部分人能掌握。主要提升效率并增强自身技能。 推荐人  | 互联

    2024年02月11日
    浏览(46)
  • 结合ChatGPT和MINDSHOW自动生成PPT

    总结/朱季谦 一、首先,通过chatGPT说明你的需求, 学会提问是Ai时代最关键的一步 。你需要提供一些关键信息,如果没有关键信息,就按照大纲方式让它设计,例如,我让它帮我写一份《2023年年中述职报告》的模版—— 二、通过提示,让它帮生成markdown语法的内容:把以上

    2023年04月11日
    浏览(32)
  • ChatGPT专业应用:小红书tag自动生成

    正文共  418 字,阅读大约需要  2  分钟 小红书运营人员必备技巧,您将在2分钟后获得以下超能力: 多样tag快速生成 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人  |  菜菜子   编辑者  |   R amy 作为小红书运营的你,是否还每日为几个

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包