本快速入门介绍如何使用 Google Cloud 控制台。在快速入门中,您将执行以下操作:
- 创建 Spanner 实例。
- 创建数据库。
- 创建架构。
- 插入和修改数据。
- 运行查询。
如需了解使用 Spanner 的费用,请参阅价格。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- 可选:Spanner API 应该会自动启用。如果未启用,请手动启用: 启用 Spanner API
-
为了获得创建实例和数据库所需的权限, 请让管理员授予您 Cloud Spanner 管理员 (`roles/spanner.admin`) 项目的 IAM 角色。
创建实例
首次使用 Spanner 时,您必须创建一个实例, 在该区域中分配 Spanner 数据库使用的资源, 实例。
在 Google Cloud 控制台中,转到 Spanner 页面。
选择或创建 Google Cloud 项目(如果您尚未创建)。
在 Spanner 页面上,点击创建预配的实例。
如果您以前使用过 Spanner,您将看到 Spanner 实例页面,而不是产品页面。点击 创建实例。
在为实例命名页面中,输入实例名称,例如测试实例。
系统会根据实例名称自动输入实例 ID,例如 test-instance。如果需要,请进行更改。点击继续。
在配置实例页面中,保留默认选项区域级,并从下拉菜单中选择配置。
您的实例配置决定了您的实例会存储和复制到什么地理位置。
点击继续。
在分配计算容量页面中,选择处理单元 (PU) 并保留默认值 1,000 个处理单元
点击创建。
Google Cloud 控制台会显示实例的概览页面 创建的内容
创建数据库
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击您创建的实例,例如测试实例。
在打开的实例“概览”页面中,点击创建数据库。
输入数据库名称,例如 example-db。
选择数据库方言。
如需了解对 PostgreSQL 的支持并获得有关选择方言的指导,请参阅 PostgreSQL 界面。 如果您选择了 GoogleSQL,则需要在本快速入门的下一部分中的定义架构文本字段中定义架构。
数据库创建页面现在如下所示:
点击创建。
Google Cloud 控制台会显示该数据库的概览页面 创建的内容
创建数据库的架构
在导航菜单中,点击 Spanner Studio。
在 Spanner Studio 页面中,点击
打开新的标签页或使用空白 编辑器标签页。请输入:
GoogleSQL
CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX), BirthDate DATE ) PRIMARY KEY(SingerId);
PostgreSQL
CREATE TABLE Singers ( BirthDate TIMESTAMPTZ, SingerId BIGINT PRIMARY KEY, FirstName VARCHAR(1024), LastName VARCHAR(1024), SingerInfo BYTEA );
点击运行。
Google Cloud 控制台会返回到数据库概览页面,然后 显示正在进行架构更新。更新完成后,页面如下所示:
GoogleSQL
PostgreSQL
请注意,PostgreSQL 会将表名称转换为小写形式。
插入和修改数据
Google Cloud 控制台提供了一个用于插入、修改和 删除数据。
插入数据
在数据库概览页面上的表列表中,点击 Singers 表。
Google Cloud 控制台会显示 Singers 表的架构页面。
在导航菜单中,点击 Data 以显示 Singers 表的 Data 页面。
点击插入。
Google Cloud 控制台会显示 Singers 表的 Spanner Studio 该页面,其中包含一个新的查询标签页,其中包含
INSERT
和SELECT
语句, 您在 Singers 表中插入一行并查看 插入:GoogleSQL
-- Add new values in the VALUES clause in order of the column list. -- Each value must be type compatible with its associated column. INSERT INTO Singers (SingerId, BirthDate, FirstName, LastName, SingerInfo) VALUES (<SingerId>, -- type: INT64 <BirthDate>, -- type: DATE <FirstName>, -- type: STRING(1024) <LastName>, -- type: STRING(1024) <SingerInfo> -- type: BYTES(MAX) ); -- Change values in the WHERE condition to match the inserted row. SELECT * FROM Singers WHERE SingerId=<SingerId>;
PostgreSQL
-- Add new values in the VALUES clause in order of the column list. -- Each value must be type compatible with its associated column. INSERT INTO singers (singerid, birthdate, firstname, lastname, singerinfo) VALUES (<singerid>, -- type: bigint <birthdate>, -- type: timestamp with time zone <firstname>, -- type: character varying <lastname>, -- type: character varying <singerinfo> -- type: bytea ); -- Change values in the WHERE condition to match the inserted row. SELECT * FROM singers WHERE singerid=<singerid>;
请注意,PostgreSQL 会将列名称转换为全部小写。
修改
INSERT
语句的VALUES
子句和SELECT
语句的WHERE
子句:GoogleSQL
-- Add new values in the VALUES clause in order of the column list. -- Each value must be type compatible with its associated column. INSERT INTO Singers (SingerId, BirthDate, FirstName, LastName, SingerInfo) VALUES (1, -- type: INT64 NULL, -- type: DATE 'Marc', -- type: STRING(1024) 'Richards', -- type: STRING(1024) NULL -- type: BYTES(MAX) ); -- Change values in the WHERE condition to match the inserted row. SELECT * FROM Singers WHERE SingerId=1;
PostgreSQL
-- Add new values in the VALUES clause in order of the column list. -- Each value must be type compatible with its associated column. INSERT INTO singers (singerid, birthdate, firstname, lastname, singerinfo) VALUES (1, -- type: bigint NULL, -- type: timestamp with time zone 'Marc', -- type: character varying 'Richards', -- type: character varying NULL -- type: bytea ); -- Change values in the WHERE condition to match the inserted row. SELECT * FROM singers WHERE singerid=1;
点击运行。
Spanner 运行这些语句。完成后,结果标签页会指明第一个语句插入了一行,并提供了一个查看表数据的链接。
在结果标签页中,点击表格链接。Singers 表现在有一行:
GoogleSQL
PostgreSQL
点击插入以添加另一行。
Google Cloud 控制台再次显示 Singers 表的 Spanner Studio 页面上有一个包含相同
INSERT
和SELECT
的新查询标签页 语句。修改
INSERT
语句的VALUES
子句和SELECT
语句的WHERE
子句:GoogleSQL
-- Add new values in the VALUES clause in order of the column list. -- Each value must be type compatible with its associated column. INSERT INTO Singers (SingerId, BirthDate, FirstName, LastName, SingerInfo) VALUES (2, -- type: INT64 NULL, -- type: DATE 'Catalina', -- type: STRING(1024) 'Smith', -- type: STRING(1024) NULL -- type: BYTES(MAX) ); -- Change values in the WHERE condition to match the inserted row. SELECT * FROM Singers WHERE SingerId=2;
PostgreSQL
-- Add new values in the VALUES clause in order of the column list. -- Each value must be type compatible with its associated column. INSERT INTO singers (singerid, birthdate, firstname, lastname, singerinfo) VALUES (2, -- type: bigint NULL, -- type: timestamp with time zone 'Catalina', -- type: character varying 'Smith', -- type: character varying NULL -- type: bytea ); -- Change values in the WHERE condition to match the inserted row. SELECT * FROM singers WHERE singerid=2;
点击运行。
Spanner 运行语句后,结果标签页再次显示 表示第一条语句插入了一行。
点击表格链接。Singers 表现在有两行:
GoogleSQL
PostgreSQL
在输入数据时您也可以插入空字符串值。
点击插入以添加行。
Spanner 再次显示 Singers 表的 Spanner Studio 页面上有一个包含相同
INSERT
和SELECT
的新查询标签页 语句。修改模板的
INSERT
语句的VALUES
子句和SELECT
语句的WHERE
子句:GoogleSQL
-- Add new values in the VALUES clause in order of the column list. -- Each value must be type compatible with its associated column. INSERT INTO Singers (SingerId, BirthDate, FirstName, LastName, SingerInfo) VALUES (3, -- type: INT64 NULL, -- type: DATE 'Kena', -- type: STRING(1024) '', -- type: STRING(1024) NULL -- type: BYTES(MAX) ); -- Change values in the WHERE condition to match the inserted row. SELECT * FROM Singers WHERE SingerId=3;
PostgreSQL
-- Add new values in the VALUES clause in order of the column list. -- Each value must be type compatible with its associated column. INSERT INTO singers (singerid, birthdate, firstname, lastname, singerinfo) VALUES (3, -- type: bigint NULL, -- type: timestamp with time zone 'Kena', -- type: character varying '', -- type: character varying NULL -- type: bytea ); -- Change values in the WHERE condition to match the inserted row. SELECT * FROM singers WHERE singerid=3;
请注意,为姓氏列提供的值是空字符串
''
,而不是NULL
值。点击运行。
Spanner 运行语句后,结果标签页 表示第一条语句插入了一行。
点击表格链接。
Singers
表现在有三行,并且主键值为3
的行在LastName
列中具有空字符串:GoogleSQL
PostgreSQL
修改数据
在 Singers 表的数据页面上,选中主键值为
3
的行对应的复选框,然后点击修改。Spanner 会显示 Spanner Studio 页面,其中包含一个 新标签页,其中包含您可以修改的模板
UPDATE
和SET
语句。请注意,两个语句的WHERE
子句都表示要更新的行是主键值为3
的行。GoogleSQL
-- Change values in the SET clause to update the row where the WHERE condition is true. UPDATE Singers SET BirthDate='', FirstName='Kena', LastName='', SingerInfo='' WHERE SingerId=3; SELECT * FROM Singers WHERE SingerId=3;
PostgreSQL
-- Change values in the SET clause to update the row where the WHERE condition is true. UPDATE singers SET birthdate=NULL, firstname='Kena', lastname='', singerinfo=NULL WHERE singerid='3'; SELECT * FROM singers WHERE singerid='3';
修改
UPDATE
语句的SET
子句,以仅更新出生日期:GoogleSQL
-- Change values in the SET clause to update the row where the WHERE condition is true. UPDATE Singers SET BirthDate='1961-04-01' WHERE SingerId=3; SELECT * FROM Singers WHERE SingerId=3;
PostgreSQL
-- Change values in the SET clause to update the row where the WHERE condition is true. UPDATE singers SET birthdate='1961-04-01 00:00:00 -8:00' WHERE singerid='3'; SELECT * FROM singers WHERE singerid='3';
点击运行。
Spanner 运行这些语句。完成后,结果标签页会指明第一个语句更新了一行,并提供了一个查看表数据的链接。
在结果标签页中,点击表格链接。
更新后的行现在包含出生日期的值。
GoogleSQL
PostgreSQL
删除数据
- 在 Singers 表的数据页面上,选中第一列中包含
2
的行对应的复选框,然后点击删除。 在显示的对话框中,点击确认。
Singers 表现在有两行:
GoogleSQL
PostgreSQL
运行查询
在数据库概览页面上,点击 Spanner Studio( 导航菜单。
点击新标签页以创建新的查询标签页。然后,输入以下查询 在查询编辑器中执行下列操作:
GoogleSQL
SELECT * FROM Singers;
PostgreSQL
SELECT * FROM singers;
点击运行。
Spanner 运行查询。完成后,结果标签页将显示查询结果:
GoogleSQL
PostgreSQL
恭喜!您已成功创建 Spanner 数据库 并使用查询编辑器执行了 SQL 语句!
清理
为避免系统向您的 Cloud Billing 账号收取额外费用,请删除数据库 以及您创建的实例删除实例时,系统会自动删除实例 实例中创建的所有数据库。
删除数据库
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击具有您要删除的数据库的实例的名称,例如测试实例。
点击要删除的数据库的名称,例如 example-db。
在数据库详细信息页面中,点击 delete 删除数据库。
输入数据库名称并点击删除,确认您要删除数据库。
删除实例
在 Google Cloud 控制台中,转到 Spanner 实例页面。
点击要删除的实例的名称,例如测试实例。
点击 delete 删除实例。
输入实例名称并点击删除,确认要删除此实例。
后续步骤
- 了解实例。
- 了解 Spanner 架构和数据模型。
- 详细了解 GoogleSQL 数据定义语言 (DDL)。
- 详细了解查询执行计划。
- 了解如何将 Spanner 与 C++、C#、Go、Java Node.js、PHP、Python、Ruby、REST 或 gcloud。