arrow_back

适用于 BigQuery 和 Cloud SQL 的 SQL 简介

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

适用于 BigQuery 和 Cloud SQL 的 SQL 简介

实验 1 小时 15 分钟 universal_currency_alt 1 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

GSP281

Google Cloud 自定进度实验

概览

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

本实验分为两个部分,上半部分讲解 SQL 基本的查询关键字。您将针对一个包含伦敦共享单车信息的公开数据集,在 BigQuery 上运行相关查询。

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

学习内容

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

  • 将数据读入 BigQuery。
  • 在 BigQuery 中执行简单的查询以探索数据。
  • 将数据子集导出为 CSV 文件,并将文件存储到新建的 Cloud Storage 存储桶。
  • 创建新的 Cloud SQL 实例,并将导出的 CSV 文件作为新表加载。

前提条件

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

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

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

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

设置和要求

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

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

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

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

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

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

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

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

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

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

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

片刻之后,系统会在此标签页中打开 Google 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_tableUSER 列内的所有姓名。

您也可以使用 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 中预安装)和 Web 控制台两种形式,都可用于管理和查询 Google Cloud 项目中托管的数据。

在本实验中,您将使用 Web 控制台运行 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. 您现在可以访问以下数据:
  • 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 命令。

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

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

  1. 复制以下命令并粘贴到查询编辑器
SELECT end_station_name FROM `bigquery-public-data.london_bicycles.cycle_hire`;
  1. 然后,点击运行

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

我们不妨看看有多少共享单车行程的时长达到 20 分钟或以上。

  1. 清除编辑器中的查询命令,然后运行以下包含关键字 WHERE 的查询:
SELECT * FROM `bigquery-public-data.london_bicycles.cycle_hire` WHERE duration>=1200;

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

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

看一下右下角,您会发现系统返回了 26,441,016 行数据。计算这些行占所有行的比例 (26441016/83434866),得出伦敦共享单车行程中时长达到 20 分钟或以上的大约有 30%(用户在这段时间里一直在骑行!)

检验您的掌握情况

我们在下方准备了一些单选题,以加强您对目前为止所学概念的理解。请尽您所能回答问题。

任务 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,该查询就会返回全部 83,434,866 行。GROUP BY 将输出在表中找到的唯一列值。您可以查看右下角的行数来确认这一点。您会看到共有 954 行数据,这意味着伦敦共有 954 个不同的共享单车租车点。

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/83434866),就会发现只有不到 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. 为您的存储桶输入一个唯一名称,将其他所有设置保留为默认值,然后点击创建

  2. 看到系统将禁止公开访问对话框中的提示时,点击确认

验证您已完成的任务

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

创建 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_data.csvend_station_data.csv 文件。

验证您已完成的任务

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

将 CSV 文件上传到 Cloud Storage。

任务 5. 创建 Cloud SQL 实例

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

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

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

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

  4. 对于数据库版本,选择 MySQL 8

  5. 选择 Cloud SQL 版本部分,选择企业版

  6. 预设部分,选择开发(4 个 vCPU、16 GB RAM、100 GB 存储空间、单个可用区)。

警告:如果您选择超过“开发”的预设配置,您的项目将被标记,实验也将终止。
  1. 多个可用区(高可用性)字段设置为

  2. 点击创建实例

注意:创建实例可能需要几分钟时间。创建完毕后,SQL 实例页面上的实例名称旁边会显示一个绿色对勾。
  1. 点击该 Cloud SQL 实例。系统会打开 SQL 概览页面。

验证您已完成的任务

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

创建 CloudSQL 实例。

任务 6. Cloud SQL 中的新查询

CREATE 关键字(数据库和表)

现在您已启动并运行了一个 Cloud SQL 实例,接下来请使用 Cloud Shell 命令行在其中创建一个数据库。

  1. 点击控制台右上角的图标,打开 Cloud Shell。

  2. 运行以下命令,将项目 ID 设置为环境变量:

export PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID

在 Cloud Shell 中创建一个数据库

  1. 在 Cloud Shell 中运行以下命令,在不打开浏览器的情况下设置身份验证。
gcloud auth login --no-launch-browser

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

  1. 运行以下命令,连接到您的 SQL 实例。如果您为实例指定了其他名称,请将 my-demo 替换为您所使用的名称。
gcloud sql connect my-demo --user=root --quiet 注意:可能需要一些时间才能连接到您的实例。如果收到“操作失败,因为正在进行其他操作”的消息,则需要等待 SQL 实例创建完成,然后再次尝试连接。
  1. 出现提示时,输入您为该实例设置的 root 密码。

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

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 494 Server version: 8.0.31-google (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;

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

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

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

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 来限定仅提取始发共享单车数量超过 10 万辆的共享单车租车点名称。

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

两个“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 Skill Boost 实验,继续学习并练习使用 Cloud SQL 和 BigQuery:

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

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 2 月 2 日

上次测试实验的时间:2024 年 2 月 2 日

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

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您