有没有听说过名为SQL的计算机语言?您可能在数据分析的背景下听说过它,但从未真正认为这将作为营销人员申请。或者,你可能会想到自己,“那是为了真的先进的数据用户。我永远也做不到。”

好吧,你不能更错了!最成功的营销人员是数据驱动的,并且数据驱动的最重要部分之一是能够快速收集数据库的数据。SQL恰好是在那里做出最好,最流行的工具之一。

下载9个Excel模板,用于营销人员[免费套件]

SQL是结构化查询语言(Structured Query Language)的缩写,当公司有大量的数据想要以一种简单快捷的方式操作时,就会使用它。如果您的公司已经raybet电子竞技在数据库中存储了数据,那么您可能需要学习SQL来访问数据。但不要担心——你现在就在正确的位置开始!

在开始之前,请确保您有一个数据库管理应用程序,它将允许您从数据库中提取数据。一些选项包括mysql工作台Sequel Pro.从下载其中一个选项开始,然后与您的公司讨论如何连接到数据库。raybet电子竞技您选择的选项将取决于您的产品的后端,所以请与您的产品团队确认,以确保您选择了正确的选项。

让我们跳进去。

为什么使用SQL ?

SQL的美妙之处在于,任何在关系数据库中存储数据的公司工作的人都可以使用它。raybet电子竞技(很有可能,你有。)

如果您为软件公司工作并希望在客户上拔雷&raybet电子竞技#31454;技苹果下载官方版出使用数据,可以使用SQL来执行此操作。如果您为有关于客户购买数据的电子商务公司工作,您可以使用Sraybet电子竞技QL来了解哪些客户正在购买哪些产品。当然,这些只是许多人中的少数人。

以这种方式思考:您是否曾在Excel中开设了非常大的数据,只为您的计算机冻结甚至关闭?SQL允许您一次只访问数据的某些部分,以便您不必将数据下载到CSV中,操纵它,并可能过载Excel。换句话说,SQL负责处理您可以在Excel中进行的数据分析。(如果你想更多地挖掘这个方面,那么更多,这里有一篇博客文章让你开始。)

如何编写简单的SQL查询

了解数据库的层次结构

在开始之前,熟悉数据库及其层次结构很重要。如果您有多个数据数据库,则需要锁定您想要处理的数据的位置。

例如,让我们假装我们正在使用关于美国人员的多个数据库。输入查询“显示数据库;”。我们的结果可能表明您有几个地点的几个数据库,包括新英格兰的一个数据库。

在您的数据库中,您将有不同的表包含您要使用的数据。使用上面的相同示例,假设我们想了解其中包含哪个信息。如果我们使用查询“在纽金兰的表演表;”,我们会发现我们为新英格兰的每个州都有表格:人们_connecticut,people_maine,people_massachusetts,people_newhAmpshire,People_Rhodeisland和People_vermont

最后,您需要了解表中的字段。字段是您可以从数据库中拉出的特定数据。例如,如果要提取某人的地址,则字段名称可能不仅可能是“地址” - 它可以分为Address_City,Address_State,Address_Zip。要解决这个问题,请使用查询“描述people_massachusetts;”。这将提供您可以使用SQL推出的所有数据的列表。

让我们使用我们的新英格兰的榜样快速审查层次结构:

  • 我们的数据库是:纽金兰。
  • 我们在该数据库中的表是:人们_connecticut,people_maine,people_massachusetts,people_newh安普希尔,罗得岛人和佛蒙特人。
  • people_massachusetts表中的字段包括:address_city、address_state、address_zip、hair_color、first_name和last_name。

现在,要学习如何编写一个简单的SQL查询,让我们使用以下示例:

谁是马萨诸塞州的红头发的人,并于2003年以字母顺序组织?

选择

SELECT选择要在图表中显示的字段。这是您想从数据库中提取的特定信息。在上面的例子中,我们想要找到符合其他条件的人

这是我们的SQL查询:

选择
first_name、

FROM指定要从中提取数据的表。在前面的部分,我们发现新英格兰的六个州分别有六张表:people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland,和people_vermont。因为我们要找的是马萨诸塞州的人,所以我们会从那个特定的表格中提取数据。

这是我们的SQL查询:

选择
first_name、


people_massachusetts

在哪里

其中允许您过滤您的查询以更具体。在我们的示例中,我们希望过滤我们的查询,仅包括在2003年出生的红发的人。让我们从红发过滤器开始。

这是我们的SQL查询:

选择
first_name、


people_massachusetts
在哪里
mair_color =“红色”

如果您想要查看马萨诸塞州的所有人以及他们特定的头发颜色,那么hair_color可以是您初始SELECT语句的一部分。但如果你想过滤一下只要有红头发的人,你可以在哪里陈述。

并允许您为您的Where语句添加其他标准。请记住,除了在2003年出生的人之外,我们还希望通过红发的人进行过滤。自从我们的陈述是由红发标准造成的,我们如何通过特定的出生年过滤?

这就是AND语句的作用所在。在本例中,AND语句是一个日期属性——但它并非必须是。(注意:请与产品团队检查日期的格式,确保格式正确。)

这是我们的SQL查询:

选择
first_name、


people_massachusetts
在哪里
mair_color =“红色”

'2003-01-01'和'2003-12-31'之间的出生_

订购

当您创建SQL查询时,您不应该将数据导出到Excel。计算和组织应该在查询中完成。这就是“ORDER BY”和“GROUP BY”函数的作用所在。首先,我们将分别查看使用ORDER BY和GROUP BY函数的SQL查询。然后,我们将简要地看看两者之间的区别。

您的订单BY子句将允许您排序您在SELECT语句中指定的任何字段。在这种情况下,让我们按姓氏订购。

这是我们的SQL查询:

选择
first_name、


people_massachusetts
在哪里
mair_color =“红色”

'2003-01-01'和'2003-12-31'之间的出生_
订购

通过...分组

“GROUP BY”与“ORDER BY”类似,但它将聚合具有相似性的数据。例如,如果数据中有重复项,可以使用“GROUP BY”来计算字段中重复项的数量。

这是您的SQL查询:

选择
first_name、


people_massachusetts
在哪里
mair_color =“红色”

'2003-01-01'和'2003-12-31'之间的出生_
通过...分组

顺序由vs.通过...分组

为了清楚地向您展示“按”陈述“声明和”由“语句的”阶级“之间的区别,让我们简单地查看我们的Massachusetts的实例,以查看一个非常简单的数据集。以下是四名员工ID号和名称的列表。

按组订购

如果我们在这个列表上使用ORDER BY语句,员工的名字将按字母顺序排序。结果看起来像这样:

命令

如果我们要使用群组声明,则将根据初始表中出现的次数计算员工。请注意,彼得在初始表中出现两次。结果看起来像这样:

通过...分组

到目前为止和我在一起?好的。让我们回到SQL查询,我们一直在2003年出生的马萨诸塞州的红发人。

限制

根据您在数据库中拥有的数据量,运行查询可能需要很长时间。如果您发现自己等待长时间运行您真正想要的Query,可能会令人沮丧。如果您想测试我们的查询,则限制功能是一个很好的使用,因为它允许您限制您获得的结果数量。

例如,如果我们怀疑在马萨诸塞州有数百万人拥有红头发,我们可能希望在完全运行查询之前使用LIMIT测试查询,以确保我们得到了想要的信息。比如说,我们只想看到前100个人。

这是我们的SQL查询:

选择
first_name、


people_massachusetts
在哪里
mair_color =“红色”

'2003-01-01'和'2003-12-31'之间的出生_
订购

限制
One hundred.

这是基础知识!

感觉好吗?以下是一些其他方法可以让您的SQL查询陷入困境。

额外奖励:高级SQL技巧

现在,您已经掌握了如何创建SQL查询,让我们来看看其他一些技巧,可以用来提高它的水平,从星号开始。

将星号添加到一个SQL查询时,它会告诉您要在结果中包含所有列的查询。在我们使用的示例中,我们只有两个列名称:first_name和last_name。但是,假设我们在结果中有15个列的数据,我们希望在结果中看到 - 在SELECT语句中键入所有15个列名的痛苦。相反,如果您用星号替换这些列的名称,则查询将知道将所有列拉到结果中。

下面是SQL查询的样子:

选择


people_massachusetts
在哪里
mair_color =“红色”

'2003-01-01'和'2003-12-31'之间的出生_
订购

限制
One hundred.

最后三十天

一旦我经常开始使用SQL,我发现我的一位转到查询涉及试图找到哪些人在过去30天内采取行动或履行某一条标准。由于这种类型的查询对我很有用,因此我想与您分享该功能。

让我们假设今天是2014年12月1日。你可以通过在2014年11月1日和2014年11月30日之间制作出生_date跨度来创建这些参数。SQL查询将如下所示:

选择
first_name、


people_massachusetts
在哪里
mair_color =“红色”

'2014-11-01' AND '2014-11-30'之间
订购

限制
One hundred.

但这需要思考过去30天的日期,这意味着您必须不断更新此查询。相反,为了使日期自动跨越过去30天,无论是哪一天,您都可以在其中键入它:staring_date> =(date_sub(curdate(),间隔30。

(注意:您将希望通过产品团队仔细检查此语法,因为它可能根据您用来拉动SQL查询的软件不同。)雷竞技苹果下载官方版

因此,你的SQL查询看起来像这样:

选择
first_name、


people_massachusetts
在哪里
mair_color =“红色”

出生_date> =(date_sub(curdate(),间隔30))
订购

限制
One hundred.

数数

在某些情况下,您可能希望计算字段的标准出现的次数。例如,假设您想计算来自马萨诸塞州的人不同头发颜色出现的次数。在这种情况下,COUNT将派上用场,这样您就不必手动计算不同头发颜色的人数或将该信息导出到Excel中。

这就是SQL查询的样子:

选择
hair_color,
伯爵(发象)

people_massachusetts

'2003-01-01'和'2003-12-31'之间的出生_
通过...分组
发色

加入

有时您可能需要在一个SQL查询中访问来自两个不同表的信息。在SQL中,您可以使用Join子句来执行此操作。(对于你熟悉的人Excel公式,这类似于当您需要将来自Excel中的两个不同纸张中的信息组合时,您将如何使用VLookup公式。)

例如,假设我们有一个表,其中包含所有马萨诸塞州居民的用户id和他们的生日的数据。假设我们还有一个完全独立的表,其中包含马萨诸塞州所有居民的用户id和他们的头发颜色的数据。如果我们想知道马萨诸塞州2003年出生的居民的头发颜色,我们需要从这两个表中获取信息并将它们合并。这是因为两个表共享一个匹配的列:马萨诸塞州居民的用户id。

因为我们从两个不同的表中呼出字段,所以我们的Select语句也将稍微改变。而不是列出我们想要包含在我们的结果中的字段中,我们需要指定他们来自的哪个表。(注意:星号函数可以在此处致电,因此您的查询包括结果中的两个表。)

要从特定的表中指定一个字段,我们需要做的就是将表的名称与字段的名称结合起来。例如,我们的SELECT语句会说“table”。字段”——用句点分隔表名和字段名。

让我们看看这在行动中的样子。

我们在这种情况下假设一些事情:

  1. 马萨诸塞出生日期表包括以下字段:first_name, last_name, user_id,出生日期
  2. Massachusetts Mair Color Color表包括以下字段:User_ID,Mair_Color

因此,您的SQL查询将如下所示:

选择
birthdate_massachusetts。first_name、
birthdate_massachusetts。


生日ate_massachusetts使用(user_id)加入haircolor_massachusetts
在哪里
mair_color =“红色”

'2003-01-01'和'2003-12-31'之间的出生_
订购

此查询将使用出现在BirthDate_Massachusett表和Haircolor_Massachusetts表中的字段“User_ID”连接两个表。然后,您将能够看到2003年出生的人桌子上有红头发。

祝贺您:您已经准备好开始使用自己的SQL查询了!虽然您可以使用SQL做更多的事情,但我希望本文对基本知识的概述对您有所帮助,以便您能够亲自动手。有了这些基础知识的坚实基础,您就能够更好地导航SQL,并处理一些更复杂的示例。

你很高兴使用SQL兴奋的数据?

新的呼叫动作
新的文字-动作

最初发布于2015年3月25日上午8:00:00,2019年7月23日更新

主题:

数据驱动营销