arrow_back

适用于 BigQuery 和 Cloud SQL 的 SQL 简介

加入 登录

适用于 BigQuery 和 Cloud SQL 的 SQL 简介

1 个小时 15 分钟 免费

GSP281

Google Cloud 自定进度实验

概览

SQL(结构化查询语言)是标准的数据操作语言,可用于查询结构化数据集并获取数据洞见。SQL 常用于数据库管理,可执行诸如将事务记录写入关系型数据库以及执行 PB 级数据分析等任务。

本实验简要介绍了 SQL,旨在帮助您做好准备,以便参与 Google Cloud Skills Boost 中关于数据科学主题的多项实验和挑战任务。本实验分为两个部分,上半部分会讲解 SQL 基本的查询关键字,而且您还将通过 BigQuery 控制台使用这些关键字来处理包含伦敦共享单车信息的公开数据集。

在下半部分,您将学习如何将伦敦共享单车数据集的子集导出为 CSV 文件,然后将这些文件上传到 Cloud SQL。接下来,您将学习如何使用 Cloud SQL 创建和管理数据库及表。最后,您将通过实操练习使用其他 SQL 关键字,对数据进行操作和编辑。

学习内容

在本实验中,您将学习如何完成以下操作:

  • 区分数据库与表和项目。
  • 使用关键字 SELECTFROMWHERE 构建简单的查询命令。
  • 识别 BigQuery 控制台中的不同组件和层次结构。
  • 将数据库和表加载到 BigQuery。
  • 对表执行简单的查询。
  • 了解 COUNTGROUP BYAS 以及 ORDER BY 等关键字。
  • 执行和串联以上命令,从数据集中获取有意义的数据。
  • 将数据子集导出为 CSV 文件,并将文件存储到新建的 Cloud Storage 存储桶。
  • 创建新的 Cloud SQL 实例,并将上述 CSV 文件作为新表加载。
  • 在 Cloud SQL 中运行 CREATE DATABASECREATE TABLEDELETEINSERT INTOUNION 查询。

前提条件

重要提示:请务必先退出您的个人和公司 Gmail 帐号,然后再开始本实验。

本实验是入门级实验。我们假定您几乎没有 SQL 相关经验。建议先熟悉 Cloud Storage 和 Cloud Shell,但不强制要求。本实验将介绍 SQL 查询命令读写方面的基础知识,并通过 BigQuery 和 Cloud SQL 进行实际应用。

在参加此实验之前,请先考虑您对 SQL 的熟练程度。下面是一些更具挑战性的实验,让您有机会运用所学知识处理更高级的用例:

准备就绪后,请向下滚动页面,并按下方步骤设置实验室环境。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示了 Google Cloud 资源可供您使用多长时间。

Qwiklabs 实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

准备工作

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
  • 为完成实验留出时间。

注意:如果您已有自己的个人 Google Cloud 帐号或项目,请不要在此实验中使用。

注意:如果您使用的是 Chrome 操作系统设备,请在无痕式窗口中运行此实验。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择帐号对话框,请点击使用其他帐号
  3. 如有必要,请从实验详细信息面板复制用户名,然后将其粘贴到登录对话框中。点击下一步

  4. 请从实验详细信息面板复制密码,然后将其粘贴到欢迎对话框中。点击下一步

    重要提示:您必须使用左侧面板中的凭据。请勿使用您的 Google Cloud Skills Boost 凭据。 注意:在本次实验中使用您自己的 Google Cloud 帐号可能会产生额外费用。
  5. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于该帐号为临时帐号,请勿添加帐号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Cloud 控制台。

注意:您可以点击左上角的导航菜单来查看列有 Google Cloud 产品和服务的菜单。 “导航菜单”图标

任务 1. SQL 基础知识

数据库和表

如前所述,SQL 可用于从“结构化数据集”中获取信息。结构化数据集拥有明确的规则和格式,通常会整理为表的形式,或以行和列的格式展示数据。

“非结构化数据”的例子包括图片文件。非结构化数据无法使用 SQL 处理,也无法存储到 BigQuery 数据集或表中(至少无法以原生方式存储)。举个例子,如要处理图片文件,您需要使用 Cloud Vision 之类的服务,而且或许可直接通过 API 使用。

下方是一个结构化数据集(简单的表)示例:

User

Price

Shipped

Sean

$35

Yes

Rocky

$50

No

如果您使用过 Google 表格,以上内容与表类似。这个表共有 3 列,分别是“User”(用户)、“Price”(价格)和“Shipped”(已发货),共有 2 行,每行都包含三列的值。

数据库本质上是一个或多个表的集合。SQL 是结构化数据库管理工具,通常您只会针对一个表或多个表(而不是整个数据库)执行查询,本实验就属于这种情况。

“SELECT”和“FROM”

SQL 本质上是拼音语言,在执行查询之前,先要弄清楚您要问数据什么问题,这非常有用,除非您只是随便探索一下。

SQL 提供了预定义的“关键字”,可用于将您的问题转化为符合 SQL 仿英语语法的语句,这样您就可以让数据库引擎返回所需的答案。

最基本的关键字是 SELECTFROM

  • SELECT 用于指定要从数据集提取哪些字段。
  • FROM 用于指定要从哪些表中提取数据。

下面的例子可以帮助您更好地理解。假设我们有以下表 example_table,其中包含“USER”“PRICE”和“SHIPPED”这三列:

示例表格

假如我们只想提取“USER”列中的数据。那么我们可以运行包含 SELECTFROM 的以下命令:

SELECT USER FROM example_table

如果执行以上命令,就可以选择 example_table 中的 USER 列所含的全部姓名。

您也可以使用 SQL 关键字 SELECT 选择多列。假设您想提取“USER”和“SHIPPED”这两列中的数据,那么可以修改之前的查询命令,向 SELECT 查询命令中添加另一个列值(务必以英文逗号分隔两个列值!):

SELECT USER, SHIPPED FROM example_table

运行以上查询命令,系统会从内存中检索 USER 列和 SHIPPED 列的数据。

示例表格

刚刚我们学习了两个基本的 SQL 关键字,接下来我们要开始更有趣的内容!

WHERE

WHERE 关键字是另一个 SQL 命令,用于滤出表中的特定列值。假设您想提取 example_table 表中已发货用户的姓名,则可以为查询命令添加 WHERE 关键字,如下所示:

SELECT USER FROM example_table WHERE SHIPPED='YES'

运行以上查询命令,系统会返回内存中所有已发货的用户:

示例表格

现在您已经对 SQL 的核心关键字有了基本了解,接下来可以在 BigQuery 控制台中运行这类查询,做到学以致用。

检验您的掌握情况

请回答以下选择题,强化您对到目前为止所学到的各个概念的理解。请尽您所能回答。

任务 2. 探索 BigQuery 控制台

BigQuery 模式

BigQuery 是在 Google Cloud 上运行的全代管式 PB 级数据仓库。数据分析师和数据科学家可以快速查询和过滤大型数据集、汇总结果以及执行复杂操作,无需为设置和管理服务器而分心。BigQuery 分为命令行工具(在 cloudshell 中预安装)和网页控制台两种形式,都可用于管理和查询 Google Cloud 项目中托管的数据。

在本实验中,您将使用网页控制台运行 SQL 查询。

打开 BigQuery 控制台

  1. 在 Google Cloud 控制台中,选择导航菜单 > BigQuery

您会看到欢迎在 Cloud 控制台中使用 BigQuery 消息框,其中提供了指向快速入门指南和版本说明的链接。

  1. 点击完成

BigQuery 控制台即会打开。

我们先来花点时间了解该界面的一些重要功能。控制台右侧是查询“编辑器”。您可以在这里编写和运行 SQL 命令,就像我们之前举过的例子。“编辑器”下方是“查询记录”,其中列出了您之前运行的一些查询。

控制台左侧的面板是“导航面板”。除了一目了然的“查询记录”“已保存的查询”和“作业记录”以外,还有一个“探索器”标签页。

“探索器”标签页是最高资源层次,其中包含 Google Cloud 项目,例如您在参加每个 Google Cloud Skills Boost 实验时登录和使用的临时 Google Cloud 项目。正如您的控制台和上一个屏幕截图所示,“探索器”标签页中显示的只有 Google Cloud 项目。如果您尝试点击项目名称旁边的箭头,系统不会显示任何内容。

这是因为您的项目不包含任何数据集或表,您没有可以执行查询操作的对象。我们之前讲过,数据集包含表。向项目添加数据时,需要注意一点,在 BigQuery 中,项目包含数据集,数据集包含表。现在您对项目 > 数据集 > 表的模式以及控制台的组成部分有了更好的认识,可以开始加载一些可查询数据了。

上传可查询数据

在此部分,您将为项目载入一些公开数据,以便在 BigQuery 中练习运行 SQL 命令。

  1. 点击 + 添加数据

  2. 选择将项目置顶 > 输入项目名称

  3. 输入 bigquery-public-data 作为项目名称

  4. 点击置顶按钮。

务必注意,您在这个新标签页中打开的项目与实验项目是相互独立的。 您所做的只是将一个包含数据集和表的可公开访问的项目载入 BigQuery 以供分析之用,而并没有切换到实验项目。 您所有的作业和服务仍然绑定到您的 Google Cloud Skills Boost 帐号。您可以查看控制台顶部附近的项目字段来亲自确认这一点。

显示 Google Cloud Skills Boost 项目名称的项目字段

  1. 在搜索栏中,输入 London Bicycle Hires,然后点击查看数据集

  2. 您现在可以访问以下数据:

  • Google Cloud 项目 → bigquery-public-data

  • 数据集 → london_bicycles

  1. 点击 london bicycles 数据集可显示关联的表

  • 表 → cycle_hire
  • 表 → cycle_stations

本次实验中,我们将使用 cycle_hire 表中的数据。 打开 cycle_hire 表,然后点击预览标签页。 您的页面应该会与以下图片类似:

cycle_hire 表,“预览”标签页

查看这些列以及各行填充的值。接下来,准备对 cycle_hire 表运行一些 SQL 查询。

在 BigQuery 中使用 SELECT、FROM 和 WHERE

您已对 SQL 查询关键字和 BigQuery 数据模式有了基本了解,并且有了一些数据可以用来处理。请使用此服务运行一些 SQL 命令。

如果您查看控制台右下角,就会发现该表共有 24,369,201 行数据,这代表 2015 年至 2017 年期间伦敦个人骑行共享单车的出行次数。从任何角度来看,这都是庞大的数据。

现在,请注意第 7 列键值:end_station_name,其中指定了共享单车行程的目的地。我们先从初级操作开始,运行简单的查询将 end_station_name 列分离出来。

  1. 复制以下命令并粘贴到查询编辑器:

SELECT end_station_name FROM `bigquery-public-data.london_bicycles.cycle_hire`;
  1. 然后,点击运行

大约 20 秒后,系统会返回 24369201 行数据,其中仅包含您查询的列:end_station_name

为何不找出哪些共享单车行程的时长至少达到 20 分钟?

  1. 清除编辑器中的查询命令,然后运行以下包含关键字 WHERE 的查询:

SELECT * FROM `bigquery-public-data.london_bicycles.cycle_hire` WHERE duration>=1200;

此查询可能需要一分钟左右的时间才能运行完毕。

SELECT * 会返回表中所有列的值。时长会按秒计算,所以才使用值 1200 (60 * 20)。

如果查看右下角,会发现系统返回了 7334890 行数据。计算这些行占全部行的比例 (7334890/24369201),得出伦敦共享单车出行中有 30% 的行程的时长至少达到 20 分钟(用户在这段时间里一直在骑行!)

检验您的掌握情况

请回答以下选择题,强化您对我们到目前为止所讲解的各个概念的理解。请尽您所能回答。

任务 3. 更多 SQL 关键字:GROUP BY、COUNT、AS 以及 ORDER BY

GROUP BY

关键字 GROUP BY 可以汇总结果集中符合同一条件(例如列值)的行,并返回所找到的符合该条件的所有唯一条目。

该关键字对于找出表中的分类信息非常有用。

  1. 为更好地了解该关键字的用法,请清除编辑器中的查询命令,然后复制以下命令并粘贴到编辑器中:

SELECT start_station_name FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name;
  1. 点击运行

结果中列出的是唯一(不重复)列值。

如果不使用 GROUP BY,该查询就会返回全部 24,369,201 行。GROUP BY 将输出在表中找到的唯一列值。您可以查看右下角的行数,亲自确认。您会看到共有 880 行数据,意味着伦敦共有 880 个不同的共享单车始发站。

COUNT

COUNT() 函数可以计算符合同一条件(例如列值)的行的数量。将其与 GROUP BY 一起使用非常有效。

COUNT 函数添加到之前的查询命令中,找出以每个始发站为起点的行程有多少。

  • 清除编辑器中的查询命令,然后复制和粘贴以下命令,并点击运行

SELECT start_station_name, COUNT(*) FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name;

输出内容中显示了以每个始发站为起点的共享单车行程的数量。

AS

SQL 还有一个 AS 关键字,用于创建表或列的别名。别名是为返回的列或表所指定的新名称,可以使用 AS 命名任意名称。

  1. 您可以向上一个查询命令中添加关键字 AS,查看效果。清除编辑器中的查询命令,然后复制并粘贴以下命令:

SELECT start_station_name, COUNT(*) AS num_starts FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name;
  1. 点击运行

"结果"中显示,右列名称从 COUNT(*) 更改为 num_starts

您会发现,返回表中的 COUNT(*) 列已设置为别名 num_starts。如果您要处理大量数据集,该关键字会非常实用,因为您会经常忘记那些模棱两可的表名称或列名称!

ORDER BY

关键字 ORDER BY 会将查询返回的数据按照指定的条件或列值以升序或降序排序。接下来,我们将此关键字添加到之前的查询命令中,以达到以下目的:

  • 返回的表中包含以每个始发站为起点的共享单车行程的数量,并且按始发站的字母顺序排序。
  • 返回的表中包含以每个始发站为起点的共享单车行程的数量,并且按数量由少到多的顺序排序。
  • 返回的表中包含以每个始发站为起点的共享单车行程的数量,并且按数量由多到少的顺序排序。

以下每项命令都是独立的查询。对每项命令执行以下操作:

  1. 清空查询编辑器。

  2. 复制该命令并粘贴到查询编辑器中。

  3. 点击运行。查看返回的结果。

SELECT start_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name ORDER BY start_station_name; SELECT start_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name ORDER BY num; SELECT start_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name ORDER BY num DESC;

上次查询的结果列出了始发站,并且按照以始发站为起点的行程数量的顺序排序。

可以看到从“Belgrove Street, King's Cross”出发的行程数量最多。不过,如果计算这些行程占全部行程的比例 (234458/24369201),就会发现只有不到 1% 的行程是以该始发站为起点的。

检验您的掌握情况

请回答以下选择题,强化您对我们到目前为止所讲解的各个概念的理解。请尽您所能回答。

任务 4. 使用 Cloud SQL

将查询结果导出为 CSV 文件

Cloud SQL 是一种全代管式数据库服务,可让您轻松地在云端设置、维护、管理和控制关系型 PostgreSQL 及 MySQL 数据库。Cloud SQL 可以接受两种格式的数据:转储文件 (.sql) 或 CSV 文件 (.csv)。下面您将学习如何将 cycle_hire 表格的子集导出为 CSV 文件,并将这些文件上传到 Cloud Storage 作为中间位置。

回到 BigQuery 控制台,这应该是您上次运行的命令:

SELECT start_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY start_station_name ORDER BY num DESC;
  1. 在“查询结果”部分,点击保存结果 > CSV(本地文件)。系统开始执行下载操作,将这些查询结果保存为 CSV 文件。记住下载文件的位置和名称,您随后会用到该文件。

  2. 清空查询编辑器,然后复制以下命令,并粘贴到查询编辑器进行运行:

SELECT end_station_name, COUNT(*) AS num FROM `bigquery-public-data.london_bicycles.cycle_hire` GROUP BY end_station_name ORDER BY num DESC;

返回的表中会包含以每个终点站为终点的共享单车行程的数量,并且按照数量由多到少的顺序排序。

  1. 在“查询结果”部分,点击保存结果 > CSV(本地文件)。系统开始执行下载操作,将这些查询结果保存为 CSV 文件。记住下载文件的位置和名称,在下一部分中会用到该文件。

将 CSV 文件上传到 Cloud Storage

  1. 转到 Cloud 控制台,创建一个存储桶,将您刚刚创建的文件上传到该存储桶。

  2. 选择导航菜单 > Cloud Storage > 存储桶,然后点击创建存储桶

注意:如果系统提示“工作未保存”,请点击退出
  1. 为您的存储桶输入一个唯一名称,将其他所有设置保留为默认值,然后点击创建

验证您已完成的任务

点击下方的检查我的进度,以检查您的实验进度。如果您已成功创建存储桶,就会看到一个评估分数。

创建 Cloud Storage 存储桶。

您现在应该位于 Cloud 控制台,请找到您新建的 Cloud Storage 存储桶。

  1. 点击上传文件,选择包含 start_station_name 数据的 CSV 文件。

  2. 然后,点击打开。重复此步骤,以上传 end_station_name 数据。

  3. 点击 start_station_name 文件一侧的三点状图标,然后点击重命名,将该文件重命名为 start_station_data.csv

  4. 点击 end_station_name 文件一侧的三点状图标,然后点击重命名,将该文件重命名为 end_station_data.csv

现在,您应该会在存储桶详情页面的对象列表中看到 start_station_name.csvend_station_data.csv 文件。

验证您已完成的任务

点击检查我的进度可验证您已完成的任务。如果您已将 CSV 对象成功上传到存储桶,则会看到一个评估分数。

将 CSV 文件上传到 Cloud Storage。

任务 5. 创建 Cloud SQL 实例

在控制台中,选择导航菜单 > SQL

  1. 点击创建实例 > 选择 MySQL

  2. 输入 qwiklabs-demo 作为实例 ID

  3. 密码字段输入一个安全的密码(务必记住!)

  4. 选择数据库版本为 MySQL 5.7

  5. 多个可用区(高可用性)字段设置为

  6. 点击创建实例

创建实例可能需要几分钟。创建完毕后,实例名称旁边会显示一个绿色对勾。

  1. 点击该 Cloud SQL 实例。系统会打开 SQL 概览页面。

验证您已完成的任务

要检查您在本实验中的进度,请点击下方的检查我的进度。 如果您已成功设置 Cloud SQL 实例,则会看到一个评估分数。

创建 CloudSQL 实例。

任务 6. Cloud SQL 中的新查询

CREATE 关键字(数据库和表)

现在您已启动并运行了一个 Cloud SQL 实例,接下来请使用 Cloud Shell 命令行在其中创建一个数据库。 复制下面的 Cloud Shell 链接,并将其粘贴到新的无痕式浏览标签页中。

https://shell.cloud.google.com/?show=terminal

设置项目 ID:

gcloud config set project [PROJECT_ID]

在 Cloud Shell 中创建一个数据库,

  1. 在 Cloud Shell 中运行以下命令,在不打开浏览器的情况下设置身份验证

gcloud auth login --no-launch-browser

这将为您提供一个可在浏览器中打开的链接。在您登录了 Qwiklabs 帐号的同一浏览器中打开链接。登录之后,您将获得验证代码,将其复制下来。在 Cloud Shell 中粘贴此代码。

配置您的项目

gcloud config set project [PROJECT_ID]
  1. 运行以下命令,以连接到 SQL 实例。如果您为实例指定了其他名称,请将 qwiklabs-demo 替换为您所使用的名称。

gcloud sql connect qwiklabs-demo --user=root --quiet 注意:您可能要过 1 分钟后才能连接到您的实例。
  1. 出现提示时,输入您为该实例设置的 root 密码。

您应该会看到以下输出内容:

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 494 Server version: 5.7.14-google-log (Google) Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

虽然 Cloud SQL 实例提供预配置的数据库,但您将创建自己的数据库来存储伦敦共享单车数据。

  1. 在 MySQL 服务器提示符处运行以下命令,创建名为 bike 的数据库:

CREATE DATABASE bike;

您应该会看到下面的输出内容:

Query OK, 1 row affected (0.05 sec) mysql>

验证您已完成的任务

要检查您的进度,请点击检查我的进度,以验证您已完成的任务。如果您在 Cloud SQL 实例中成功创建了数据库,系统会显示一个评估分数。

创建数据库。

在 Cloud Shell 中创建一个表

  1. 运行以下命令,在“bike”数据库中制作一个表:

USE bike; CREATE TABLE london1 (start_station_name VARCHAR(255), num INT);

此语句使用了关键字 CREATE,这次还使用了 TABLE 子句,用于指定要创建的是表而不是数据库。关键字 USE 指定了要连接的目标数据库。现在,您会得到一个名称为“london1”的表,其中包含两个列:“start_station_name”和“num”。VARCHAR(255) 指定了可变长度的字符串最多可以容纳 255 个字符,并且 INT 列包含的是整数类型的数据。

  1. 运行以下命令,创建另一个名为“london2”的表:

USE bike; CREATE TABLE london2 (end_station_name VARCHAR(255), num INT);
  1. 现在确认您已创建了空表。在 MySQL 服务器提示符处运行以下命令:

SELECT * FROM london1; SELECT * FROM london2;

您应该会收到这两个命令的以下输出结果:

Empty set (0.04 sec)

因为您尚未加载数据,所以输出结果中显示了“空集”。

将 CSV 文件上传到表中

返回 Cloud SQL 控制台。您现在要将 CSV 文件 start_station_nameend_station_name 分别上传到您刚刚创建的表“london1”和“london2”中。

  1. 在您的 Cloud SQL 实例页面中,点击导入
  2. 在 Cloud Storage 文件字段,点击浏览,然后点击存储桶名称旁边的箭头,最后点击 start_station_data.csv。点击选择
  3. 选择 CSV 作为文件格式。
  4. 选择 bike 数据库,并输入“london1”作为表名称。
  5. 点击导入

为另一个 CSV 文件执行相同操作。

  1. 在您的 Cloud SQL 实例页面中,点击导入
  2. 在 Cloud Storage 文件字段,点击浏览,然后点击存储桶名称旁边的箭头,接下来点击 end_station_data.csv,最后点击选择
  3. 选择 CSV 作为文件格式。
  4. 选择“bike”数据库,并输入“london2”作为表名称。
  5. 点击导入

现在,您应该已经将两个 CSV 文件都上传到 bike 数据库的表中。

  1. 回到 Cloud Shell 会话,并在 MySQL 服务器提示符处运行以下命令,以检查“london1”的内容:

SELECT * FROM london1;

您应该会收到 881 行输出结果,每一行都包含唯一的站点名称。

  1. 运行以下命令,确认“london2“已填充数据:

SELECT * FROM london2;

您应该会收到 883 行输出结果,每一行都包含唯一的站点名称。

DELETE 关键字

下面还将介绍一些 SQL 关键字,以帮助您更好地管理数据。第一个就是 DELETE 关键字。

  • 在 MySQL 会话中运行以下命令,以删除“london1”和“london2”中的第一行数据:

DELETE FROM london1 WHERE num=0; DELETE FROM london2 WHERE num=0;

运行这两个命令后,您应该会收到以下输出结果:

Query OK, 1 row affected (0.04 sec)

被删除的是 CSV 文件中的列标题所在的行。关键字 DELETE 本身并不会移除文件的第一行,而是会移除表中的列名(此例中是“num”)包含指定值(本例中是“0”)的所有行。如果您运行查询命令 SELECT * FROM london1;SELECT * FROM london2;,并滚动至表顶部,就会发现列值为 0 的行已被删除。

INSERT INTO 关键字

您还可以使用关键字 INSERT INTO 向表插入值。

  • 运行以下命令,向“london1”插入一个新行,其中的 start_station_name 列值设置为“test destination”,num 列值设置为“1”:

INSERT INTO london1 (start_station_name, num) VALUES ("test destination", 1);

INSERT INTO 关键字要求有一个表(此例中是“london1”),并将新建一行,通过在第一个括号内输入字词来指定要在哪个列中插入数据(本例中为“start_station_name”和“num”),而“VALUES”子句后面的内容将作为值加入到新行中。

您应该会看到下面的输出内容:

Query OK, 1 row affected (0.05 sec)

如果您运行查询命令 SELECT * FROM london1;,则会看到“london1”表底部新增了一行。

UNION 关键字

我们要讲解的最后一个关键字是 UNION。该关键字可将两个或更多 SELECT 查询的输出合并到一个结果集中。您可以使用 UNION 将“london1”和“london2”表的子集合并起来。

以下串联的查询命令可以从两个表中提取特定数据,然后使用 UNION 运算符将这些数据合并到一起。

  • 在 MySQL 服务器提示符处运行以下命令:

SELECT start_station_name AS top_stations, num FROM london1 WHERE num>100000 UNION SELECT end_station_name, num FROM london2 WHERE num>100000 ORDER BY top_stations DESC;

第一个 SELECT 查询会选择“london1”表中的两列,然后为“start_station_name”创建别名“top_stations”。该查询使用关键字 WHERE 来限定仅提取始发共享单车数量超过 1 万辆的共享单车站点名称。

第二个 SELECT 查询选择“london2”表中的两列,并使用关键字 WHERE 来限定仅提取到站共享单车数量超过 1 万辆的共享单车站点名称。

两个“SELECT”之间的关键字 UNION 通过将“london1”的数据与“london2”的数据同化来合并这两个查询的输出结果。由于是“london1”合并“london2”,所以优先采用列值“top_stations”和“num”。

ORDER BY 会将最终合并后的表中的数据按照“top_stations”列值的首字母降序排序。

您应该会看到下面的输出内容:

包含 top_stations 和 num 列的表

如结果所示,14 个站点中有 13 个站点同时入选始发和到站共享单车数量最多的站点榜单。凭借一些基本 SQL 关键字,您可以对庞大的数据集执行查询操作,从中获得重要数据点以及解答特定问题。

恭喜!

在本实验中,您学习了 SQL 基础知识,以及如何在 BigQuery 和 CloudSQL 中应用关键字并运行查询。您掌握了项目、数据库和表背后的核心概念,还练习了使用关键字来操作和编辑数据。接下来,您学习了如何向 BigQuery 加载数据集,并练习对表运行查询。您了解到如何在 Cloud SQL 中创建实例,并练习将数字子集导入数据库所含的表中。最后,在 Cloud SQL 中串联和运行查询,取得了有关伦敦共享单车始发站和终点站的有趣结论。

完成挑战任务

本自学实验是以下挑战任务的组成部分:Google Cloud 数据科学科学的数据处理方法Cloud SQL面向数据分析师的 BigQuery 基础知识NCAA® March Madness® 篮球锦标赛:使用 Google Cloud 预测云工程Data Catalog 基础知识以及在零售业应用中运用 BQML 的分类、回归和需求预测。一项挑战任务就是一系列相关的实验,学习时按部就班地完成这些实验即可。完成挑战任务即可赢得一枚徽章,以表彰您取得的成就。您可以公开展示徽章,还可以在您的在线简历或社交媒体帐号中加入指向徽章的链接。欢迎注册参加任何包含此实验的挑战任务,完成后就能立即获得相应的积分。请参阅 Google Cloud Skills Boost 目录查看所有可用的请求。

后续步骤/了解详情

通过以下 Google Cloud Skill Boost 实验,继续学习并练习使用 Cloud SQL 和 BigQuery:

参阅《Data Science on the Google Cloud Platform》第二版:O'Reilly Media, Inc.,详细了解数据科学相关内容。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳做法,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,有点播、直播和虚拟三种培训方式可供选择,让您不必挤占忙碌时间。各项认证则可帮助您检验和证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2022 年 10 月 3 日

上次测试实验的时间:2022 年 10 月 3 日

版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。