ChatGPT帮助下的适用于商业人员的SQL

用更聪明的方式说数据的语言

ChatGPT中文站
Photo by KOBU Agency on Unsplash

随着“大数据”的兴起,大多数公司能够获得越来越多有关其顾客的数据。因此,大多数明智的商业决策通常不是通过试错,而是由数据所显示的实际情况驱动。

无论您想知道有多少人在宠物帝国网站上使用那只猫食物计算器,想知道有多少客户选择接收您的通讯,还是想知道您的订单最多的时间,这些数据通常存储在您的企业数据库中。

现有仪表板存在的问题

ChatGPT中文站
Photo by Luke Chesser on Unsplash

当问题简单时,找到答案也可以很简单。您可以查看为此目的制作的仪表板,或向具有该数据访问权限的人询问“查询”以为您提供答案。但是,当要求变得更加复杂时,提取数据的麻烦也会增加。可能是这样的:

  • 您所拥有的仪表板不够灵活或是属于内部使用,因此需要开发时间来添加新的见解和数据。
  • 要求数据的要素可能效率低下,会消耗许多人的时间,并且阻碍探索,因为每次调整都需要来回沟通。

通常情况下,企业更喜欢那些需要询问数据的人将中间人清除,学会直接与数据库交流。这就是SQL的用处。

什么是数据库?什么是SQL?

有可能你已经熟悉什么是SQL了,如果是的话,可以跳过这一节!

大多数涉及企业的数据通常存储在一种称为数据库的软件中。这种数据库软件(专业称为数据库管理系统)专门用于存储数据,并以高效的方式检索数据(或允许您执行删除和更新等数据操作)。

在过去的几十年中,最受欢迎的系统一直是关系型数据库(RDBMS),其中R代表关系。这基本上意味着数据存储在“表格”中(类似于电子表格软件中的表单),这些表格具有列和行,并且一个表格中的数据可以指向另一个表格。

你的业务使用关系型数据库(RDBMS)吗?如果你听到过像PostgreSQL、MySQL、MariaDB或SQL Server这样的软件,那答案就是肯定的!

电子表格类比

让我们用电子表格软件的一个例子来更清楚地说明,你可能会有一个称为“订单”的工作表,它有“订单号”、“顾客号”、“总计”、“时间和日期”等列。

你可能还有一个客户表,其中包含“客户编号”,“名字”,“姓氏”,“电话号码”等信息。

现在想象一下,你正在尝试获取每个顾客的电话号码和所有订单。从数据库的角度来看,这是一个“关系”,因为你订单表中的每一行都与顾客表有某种关联。

虽然电子表格比喻是对数据库所做的过度简化,但它是开始理解它们的好方法。

请用 SQL 和我交流。

现在我们已经确定了什么是数据库,是时候谈论你想学习的了:SQL。SQL(或结构化查询语言)是与数据库交流的“语言”,它也不像编程语言那样令人不知所措:

  • 如果你想要询问信息,你将会以SELECT开始你的查询。(与DELETE,UPDATE等相对)
  • 你将用.这样的语法告诉数据库你需要什么,比如“orders.order_number”。
  • 你需要告诉它你想要数据库查询的主表:“FROM 订单”。
  • 最后,您将使用“WHERE”通过告诉它您的标准进行缩小:“WHERE order.customer_number = 2”
  • 因此,要获取客户号码为2的所有订单号码,我们可以执行以下操作:

    SELECT orders.order_number FROM orders WHERE orders.customer_number = 2;

    这将为我们提供一个结果,该结果是包含该客户所有订单编号的一列。

    头脑转 SQL 的挑战

    通过了解SQL的基础知识,您应该能够直接询问简单的问题。但是,一旦问题变得更加复杂,直觉地找到所需的操作可能会很困难。这也适用于电子表格,您必须知道复杂的细节和函数才能实现您想要的功能。这就是您可能需要借助ChatGPT的帮助来更快地学习并获得结果的地方。

    正确引导ChatGPT的方式

    现在你可能会问如何向ChatGPT恰当地提出我的要求?这是我会做的:

    你是一个有用的SQL助手,我会给你我的SQL数据库结构,然后我会询问关于数据的问题,你需要用SQL查询来回答。在SQL查询后,你可以解释查询的各个部分及其功能。

    表格:订单,列:订单编号,客户编号,总计(数字),时间和日期

    表:顾客,列:顾客号码,名字,姓氏,电话号码。

    我想知道2023年1月1日之后每个订单的姓氏和电话号码。

    基本上,我只需告诉ChatGPT我想要什么以及我有哪些(相关)表格,就可以简单地询问它关于数据的问题,它会返回结果:

    SELECT c.last_name, c.phone_number
    FROM orders o
    JOIN customers c ON o.customer_number = c.customer_number
    WHERE o.time_and_date > '2023-01-01';

    以下是ChatGPT的解释:

    让我们逐步分解这个查询:

    1. SELECT语句用于指定我们想要从数据库中检索的列。在此情况下,我们想要选择客户表中的姓氏(c.last_name)和电话号码(c.phone_number)。
    2. FROM子句指定查询涉及的表。我们需要从订单表和顾客表检索数据。分别使用“o”和“c”别名对这些表进行赋别名。
    3. 使用JOIN关键字可以根据它们之间的相关列将来自两个或更多表的行组合在一起。在此情况下,我们希望使用customer_number列将订单表(o)与客户表(c)进行连接。
    4. ON 关键字用于指定连接条件,即订单表中的 customer_number 列与顾客表中的 customer_number 列之间的相等关系。
    5. WHERE子句用于根据指定条件过滤结果。在本例中,我们希望仅检索2023年1月1日之后下达的订单。条件o.time_and_date > '2023-01-01'确保仅将相关订单包含在结果集中。

    虽然你可能可以要求进一步澄清,但ChatGPT已经提供了一个可以用来获取所需数据的工作查询。

    在您接下来的步骤中,您也可以向ChatGPT提出修改,询问查询的详细信息或询问性能改进。

    • 你能告诉我客户的名字吗?
    • 什么是加入?
    • 这个查询需要超过20分钟才能运行完成,你能提供一些查询示例吗?这些查询能提供相同结果但速度更快。

    最终想法

    虽然必须谨慎使用ChatGPT,因为它经常看上去很有权威性,但却会给出错误的结果,但它可以大大帮助减少学习如何更直接地与数据交互的门槛,你所需要做的是,代替撰写查询,进行提示的工程化!

    如果你喜欢这个作品,请务必关注我以获取更多科技和软件方面的内容。如果你有类似的经验、提示或问题,请在评论区自由发表!

2023-10-20 16:52:22 AI中文站翻译自原文