介绍性SQL教程:如何编写简单查询

栏目: 数据库 · 发布时间: 5年前

内容简介:如何查询SQL数据库:确保您有一个数据库管理应用程序(例如MySQL Workbench,Sequel Pro)。如果没有,请下载数据库管理应用程序并与贵公司合作以连接数据库。

如何查询 SQL 数据库:

确保您有一个数据库管理应用程序(例如MySQL Workbench,Sequel Pro)。

如果没有,请下载数据库管理应用程序并与贵公司合作以连接数据库。

了解您的数据库及其hierarhcy。

找出表格中的哪些字段。

开始编写SQL查询以获取所需数据。

有没有听说过称为SQL的计算机语言?您可能已经在数据分析的背景下听说过它,但从未真正认为它适用于您作为营销人员。或者,您可能已经想过,“那是真正先进的数据用户。我永远不会那样做。”

好吧,你不能错!最成功的营销人员是数据驱动的,数据驱动的最重要部分之一是能够快速从数据库收集数据。 SQL恰好是最好和最受欢迎的 工具 之一。

为营销人员下载9个免费的Excel模板

SQL代表结构化查询语言,当公司拥有大量他们希望以简单快捷的方式操作的数据时,它就会被使用。如果您的公司已将数据存储在数据库中,您可能需要学习SQL来访问数据。但不要担心 – 你是在正确的地方开始!

在开始之前,请确保您有一个数据库管理应用程序,允许您从数据库中提取数据。一些选项包括MySQL Workbench或Sequel Pro。首先下载其中一个选项,然后与您的公司讨论如何连接到您的数据库。您选择的选项取决于产品的后端,因此请与您的产品团队联系,确保选择正确的后端。

让我们跳进去。

为什么使用SQL?

SQL的优点在于,在关系数据库中存储数据的公司工作的任何人都可以使用它。 (很有可能,你的确如此。)

如果您为一家软件公司工作并希望提取客户的使用数据,则可以使用SQL来实现。如果您在拥有有关客户购买数据的电子商务公司工作,您可以使用SQL查找哪些客户正在购买哪些产品。当然,这些只是许多例子中的一小部分。

想一想:您是否曾在Excel中打开过非常大的数据集,只能让您的计算机冻结甚至关闭? SQL允许您一次只访问数据的某些部分,因此您不必将数据下载到CSV中,对其进行操作,并可能使Excel过载。换句话说,SQL负责您可能习惯在Excel中执行的数据分析。 (如果你想深入研究SQL的这个方面,这里有一篇博文,可以帮助你入门。)

如何编写简单的SQL查询

了解数据库的层次结构

在开始之前,习惯于数据库及其层次结构非常重要。如果您有多个数据数据库,则需要将您想要使用的数据的位置归零。

例如,让我们假装我们正在处理有关美国人的多个数据库。键入查询“SHOW DATABASES;”。我们的结果可能表明您有不同位置的几个数据库,包括一个新英格兰的数据库。

在数据库中,您将拥有包含要使用的数据的不同表。使用上面的相同示例,假设我们想要找出其中一个数据库中包含哪些信息。如果我们使用查询“NewEngland中的SHOW TABLES;”,我们会发现新英格兰的每个州都有表格:people_connecticut,people_maine,people_massachusetts,people_newhampshire,people_rhodeisland和people_vermont。

最后,您需要找出表中的哪些字段。字段是您可以从数据库中提取的特定数据。例如,如果你想拉某人的地址,那么字段名称可能不仅仅是“地址” – 它可以分为address_city,address_state,address_zip。为了解决这个问题,请使用查询“Describe people_massachusetts;”。这将提供您可以使用SQL提取的所有数据的列表。

让我们使用New England示例快速查看层次结构:

我们的数据库是:NewEngland。

我们在该数据库中的表格是:people_connecticut,people_maine,people_massachusetts,people_newhampshire,people_rhodeisland和people_vermont。

people_massachusetts表中的字段包括:address_city,address_state,address_zip,hair_color,first_name和last_name。

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

谁是马萨诸塞州红头发的人,2003年出生的人按字母顺序排列?

选择

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

这是我们的SQL查询:

选择

名字,

FROM精确定位要从中提取数据的表。在前面的部分中,我们发现新英格兰的六个州分别有六个表:people_connecticut,people_maine,people_massachusetts,people_newhampshire,people_rhodeisland和people_vermont。因为我们专门在马萨诸塞州寻找人,所以我们将从该特定表中提取数据。

这是我们的SQL查询:

选择

名字,

people_massachusetts

哪里

WHERE允许您过滤查询以使其更具体。在我们的例子中,我们想要过滤我们的查询,只包括2003年出生的红头发人。让我们从红发过滤器开始。

这是我们的SQL查询:

选择

名字,

people_massachusetts

哪里

hair_color =“红色”

如果您想要查看马萨诸塞州的所有人以及他们的特定头发颜色,hair_color可能已成为您的初始SELECT语句的一部分。但是,如果要过滤以仅查看红头发的人,可以在WHERE语句中执行此操作。

AND允许您向WHERE语句添加其他条件。请记住,除了2003年出生的人之外,我们还希望对那些红头发的人进行过滤。由于我们的WHERE声明采用红发标准,我们如何按特定的出生年份过滤?

这就是AND语句的用武之地。在这种情况下,AND语句是一个日期属性 – 但它不是必须的。 (注意:请检查产品团队的日期格式,以确保其格式正确。)

这是我们的SQL查询:

选择

名字,

people_massachusetts

哪里

hair_color =“红色”

birth_date BETWEEN’2003-01-01’和’2003-12-31′

订购

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

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

这是我们的SQL查询:

选择

名字,

people_massachusetts

哪里

hair_color =“红色”

birth_date BETWEEN’2003-01-01’和’2003-12-31′

订购

;

通过…分组

“GROUP BY”类似于“ORDER BY”,但它将汇总具有相似性的数据。例如,如果您的数据中有任何重复项,则可以使用“GROUP BY”计算字段中重复项的数量。

这是您的SQL查询:

选择

名字,

people_massachusetts

哪里

hair_color =“红色”

birth_date BETWEEN’2003-01-01’和’2003-12-31′

通过…分组

;

订购VS.通过…分组

为了清楚地向您展示“ORDER BY”语句和“GROUP BY”语句之间的区别,让我们简单地走出马萨诸塞州的例子,看看一个非常简单的数据集。以下是四名员工的身份证号码和姓名列表。

按组排序

如果我们在此列表中使用ORDER BY语句,则员工的姓名将按字母顺序排序。结果如下:

订购

如果我们使用GROUP BY语句,员工将根据它们出现在初始表中的次数计算。请注意,彼得在初始表中出现了两次。结果如下:

通过…分组

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

限制

根据数据库中的数据量,运行查询可能需要很长时间。如果你发现自己要等很长时间来运行一个你并不想真正开始的查询,那会很令人沮丧。如果你想测试我们的查询,LIMIT函数是一个很好的使用,因为它允许你限制你得到的结果数量。

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

这是我们的SQL查询:

选择

名字,

people_massachusetts

哪里

hair_color =“红色”

birth_date BETWEEN’2003-01-01’和’2003-12-31′

订购

限制

100

;

这就是基础知识!

感觉不错?以下是将SQL查询提升一个档次的其他几种方法。

额外奖励:高级SQL技巧

既然您已经掌握了如何创建SQL查询,那么让我们来看一些其他技巧,您可以使用这些技巧从星号开始。

*

当您向其中一个添加星号时

你的SQL查询,它告诉查询你想要在结果中包含所有数据列。在我们一直使用的示例中,我们只有两个列名:first_name和last_name。但是,假设我们希望在结果中看到15列的数据 – 在SELECT语句中输入所有15个列名称会很麻烦。相反,如果用星号替换这些列的名称,查询将知道将所有列拉到结果中。

这是SQL查询的样子:

选择

*

people_massachusetts

哪里

hair_color =“红色”

birth_date BETWEEN’2003-01-01’和’2003-12-31′

订购

限制

100

;

最后30天

一旦我开始经常使用SQL,我发现我的一个首选查询涉及尝试查找哪些人在过去30天内采取了行动或满足了一系列标准。由于这种类型的查询对我来说非常有用,我想与您分享该功能。

让我们假设今天是2014年12月1日。您可以通过在2014年11月1日到2014年11月30日之间生成birth_date来创建这些参数。该SQL查询将如下所示:

选择

名字,

people_massachusetts

哪里

hair_color =“红色”

birth_date BETWEEN’2014-11-01’AND’2014-11-30′

订购

限制

100

;

但这需要考虑过去30天的哪些日期,这意味着您必须不断更新此查询。相反,要使日期自动跨越过去30天,无论它是哪一天,您都可以在AND下输入:birth_date> =(DATE_SUB(CURDATE(),INTERVAL 30)。

(注意:您需要对产品团队仔细检查此语法,因为它可能会因您用于提取SQL查询的软件而有所不同。)

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

选择

名字,

people_massachusetts

哪里

hair_color =“红色”

birth_date> =(DATE_SUB(CURDATE(),INTERVAL 30))

订购

限制

100

;

计数

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

这是SQL查询的样子:

选择

发色,

COUNT(hair_color)

people_massachusetts

birth_date BETWEEN’2003-01-01’和’2003-12-31′

通过…分组

发色

;

加入

您可能需要在一个SQL查询中访问两个不同表中的信息。在SQL中,您可以使用JOIN子句来执行此操作。 (对于那些熟悉Excel公式的人来说,这与在Excel中需要组合来自两个不同工作表的信息时使用VLOOKUP公式的方式类似。)

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

因为我们从两个不同的表中调用字段,所以我们的SELECT语句也会略有改变。我们不需要列出我们想要包含在结果中的字段,而是需要指定它们来自哪个表。 (注意:星号功能可能会派上用场,因此您的查询会在结果中包含两个表格。)

要指定特定表中的字段,我们所要做的就是将表的名称与字段的名称组合在一起。例如,我们的SELECT语句会说“table.field” – 使用句点分隔表名和字段名。

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

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

Massachusetts birthdate表包括以下字段:first_name,last_name,user_id,birthdate

马萨诸塞发色表包括以下字段:user_id,hair_color

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

选择

birthdate_massachusetts.first_name,

birthdate_massachusetts.last_name

birthdate_massachusetts JOIN haircolor_massachusetts USING(user_id)

哪里

hair_color =“红色”

birth_date BETWEEN’2003-01-01’和’2003-12-31′

订购

;

此查询将使用出现在birthdate_massachusetts表和haircolor_massachusetts表中的字段“user_id”来连接这两个表。然后,您将能够看到2003年出生的红色人员表

头发。

恭喜:您已准备好开始使用自己的SQL查询! 虽然您可以使用SQL做更多的事情,但我希望您发现这些基础知识概述很有帮助,这样您就可以轻松搞定。 凭借基础知识的强大基础,您将能够更好地导航SQL并努力实现一些更复杂的示例。

您兴奋地使用SQL获取哪些数据?

本文来自投稿,不代表穷思笔记立场,如若转载,请注明出处:http://www.chons.cn/11070.html


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

面向模式的软件体系结构(卷1) (平装)

面向模式的软件体系结构(卷1) (平装)

Frank Buschmann、Regine meunier、Hans Rohnert、Peter Sommerlad、Michael Stal / 贲可荣、郭福亮 / 机械工业出版社 / 2003-1 / 45.0

一起来看看 《面向模式的软件体系结构(卷1) (平装)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具