Google Cloud コンソールを使用してデータベースを作成しクエリを実行する
このクイックスタートでは、Google Cloud コンソールを使用して Cloud Spanner の基本オペレーションを行う方法について説明します。このクイックスタートでは、以下の操作を行います。
- Spanner インスタンスを作成する
- データベースを作成します。
- スキーマを作成します。
- データを挿入し変更します。
- クエリを実行する。
Spanner を使用する料金については、料金をご覧ください。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud Spanner API を有効にします。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud Spanner API を有効にします。
インスタンスを作成する
Spanner を初めて使用するときは、インスタンスを作成する必要があります。これにより、そのインスタンスの Spanner データベースによって使用されるリソースが割り当てられます。
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
インスタンス名に、「テスト・インスタンス」などの名前を入力します。
インスタンス ID は、例えば test-instance など、インスタンス名に基づき自動的に入力されます。必要に応じて変更します。
[構成を選択する] で、デフォルトのオプション [リージョン] を保持し、プルダウン メニューから構成を選択します。
インスタンスの構成により、インスタンスが保存および複製される地理的なロケーションが決まります。
[コンピューティング容量の割り当て] で、1,000 処理単位のデフォルト値のままにします。
インスタンス作成ページは次のようになります。
[作成] をクリックします。
インスタンスがインスタンス リストに表示されます。
データベースの作成
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
テスト インスタンスなどの作成したインスタンスをクリックします。
開いたインスタンスの [概要] ページで、[データベースを作成する] をクリックします。
データベース名には、example-db などの名前を入力します。
データベース言語を選択します。
PostgreSQL のサポートや、言語の選択に関するガイダンスについては、PostgreSQL Interface をご覧ください。 Google SQL を選択した場合、このクイックスタートの次のセクションの [スキーマを定義する] テキスト フィールドでスキーマを定義します。
データベース作成ページは次のようになります。
[作成] をクリックします。
Cloud Console に、作成したデータベースの [概要] ページが表示されます。
データベースのスキーマの作成
データベースの [概要] ページの [テーブル] セクションで、[テーブルを作成する] をクリックします。
[DDL ステートメントを書き込む] ページで、次のように入力します。
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 ( SingerId BIGINT PRIMARY KEY, FirstName VARCHAR(1024), LastName VARCHAR(1024), SingerInfo BYTEA, BirthDate TIMESTAMPTZ );
[送信] をクリックします。
Google Cloud コンソールがデータベースの [概要] ページに戻り、[スキーマの更新] が進行中であることが表示されます。更新が完了すると、次のようなページが表示されます。
GoogleSQL
PostgreSQL
PostgreSQL でテーブル名が小文字に変換されていることに注意します。
データの挿入と変更
Google Cloud Console には、データを挿入、編集、削除するためのインターフェースがあります。
データの挿入
データベースの [概要] ページのテーブルで、Singers テーブルをクリックします。
Google Cloud Console に Singers テーブルの [スキーマ] ページが表示されます。
ナビゲーション・メニューで、[データ] をクリックして、Singers テーブルの [データ] ページを表示します。
[挿入] をクリックします。
Google Cloud コンソールには、Singers テーブルに行を挿入し、その挿入の結果を表示するために編集する
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 により、ステートメントが実行されます。 完了すると、[結果] タブでは、最初のステートメントで 1 行が挿入されたことと、テーブルのデータを表示するリンクが示されます。
[結果] タブで、[テーブル] リンクをクリックします。Singers テーブルに行が 1 つ追加されました。
GoogleSQL
PostgreSQL
[挿入] をクリックして別の行を追加します。
Google Cloud Console には、同じ
INSERT
ステートメントとSELECT
ステートメントを含む新しいクエリタブを有する Singers テーブルの [クエリ] ページが再表示されます。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 によりステートメントが実行されると、[結果] タブには、最初のステートメントによって 1 行挿入されたことが示されます。
テーブルのリンクをクリックします。Singers テーブルの行が 2 つになりました。
GoogleSQL
PostgreSQL
また、データを入力するときに、空の文字列値を挿入することもできます。
[挿入] をクリックして行を追加します。
Cloud Spanner には、同じ
INSERT
ステートメントとSELECT
ステートメントを含む新しいクエリタブを有するSingers テーブルのクエリページが再表示されます。テンプレートの
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 によりステートメントが実行されると、[結果] タブには、最初のステートメントによって 1 行挿入されたことが示されます。
テーブルのリンクをクリックします。
Singers
テーブルには 3 つの行があり、3
の 主キー値を有する行には、LastName
列に空の文字列があります。GoogleSQL
PostgreSQL
データの編集
Singers テーブルの [データ] ページで、主キーの値で
3
の行にあるチェックボックスをオンにして、[編集] をクリックします。Spanner には、編集できるテンプレート
UPDATE
ステートメントとSELECT
のステートメントを含む新しいタブを有する [クエリ] ページが表示されます。なお、両方のステートメントの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 により、ステートメントが実行されます。 完了すると、[結果] タブでは、最初のステートメントで 1 行が更新されたことと、テーブルのデータを表示するリンクが示されます。
[結果] タブで、[テーブル] リンクをクリックします。
更新された行には、生年月日の値が入っています。
GoogleSQL
PostgreSQL
データの削除
- Singers テーブルの [データ] ページで、最初の列の
2
が含まれる行のチェックボックスをオンにして、[削除] をクリックします。 表示されるダイアログで [確認] をクリックします。
Singers テーブルの行が 2 つになりました。
GoogleSQL
PostgreSQL
クエリの実行
データベースの [概要] ページで、ナビゲーション メニューの [クエリ] をクリックします。
[新しいタブ] をクリックして、新しいクエリタブを作成します。次に、クエリエディタに以下のクエリを入力します。
GoogleSQL
SELECT * FROM Singers;
PostgreSQL
SELECT * FROM singers;
[実行] をクリックします。
Spanner がクエリを実行します。完了すると、[結果] タブにクエリの結果が表示されます。
GoogleSQL
PostgreSQL
これで完了です。クエリエディタを使用して、正常にSpanner データベースを作成し、SQL ステートメントを実行することができました。
クリーンアップ
Cloud 請求先アカウントにこれ以上料金が発生しないようにするには、作成したデータベースとインスタンスを削除します。インスタンスを削除すると、そのインスタンス内に作成されたすべてのデータベースが自動的に削除されます。
データベースの削除
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
テスト・インスタンスなど、削除するデータベースがあるインスタンスの名前をクリックします。
example-db など、削除するデータベースの名前をクリックします。
[データベースの詳細] ページで、[deleteデータベースを削除する] をクリックします。
データベース名を入力して [削除] をクリックし、データベースを削除することを確認します。
インスタンスの削除
Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。
[テスト インスタンス] など、削除するインスタンスの名前をクリックします。
[deleteインスタンスを削除する] をクリックします。
インスタンス名を入力し [削除] をクリックして、インスタンスを削除することを確認します。