データベースの作成と管理

このページでは、Spanner データベースの管理方法(データベースの作成、データベース オプションの変更、データベースの削除など)について説明します。データベース スキーマを更新する方法については、スキーマを更新するをご覧ください。

データベースの作成とサンプルデータの読み込みを練習することについては、最初のデータベースの Codelab をご覧ください。

データベースの作成

以下の例では、既存のインスタンスにデータベースを作成する方法を示します。

GoogleSQL 言語データベースの場合、データベース スキーマは、データベースの作成時に定義するか、データベースを作成した後に定義できます。PostgreSQL 言語データベースの場合は、作成後にスキーマを定義する必要があります。

スキーマはデータベース定義言語を使用して定義します。これは GoogleSQL 用と PostgreSQL 用にドキュメント化されています。スキーマの作成と更新の詳細については、次のリンク先をご覧ください。

データベースを作成した後で、データベースの削除保護を有効にすることで、アプリケーションとサービスにとって重要なデータベースを保護できます。詳細については、データベースの誤った削除を防止するをご覧ください。

Console

  1. Google Cloud コンソールで、[Spanner インスタンス] ページに移動します。

    Spanner インスタンスに移動

  2. データベースを作成するインスタンスを選択します。

  3. [データベースを作成] をクリックします。

  4. 次の値を入力します。

    • Google Cloud コンソールに表示されるデータベース名
    • このデータベースに使用する言語
    • GoogleSQL 言語データベースの場合は、必要に応じてスキーマを定義する一連の DDL ステートメントを指定します。DDL テンプレートを使用して、一般的な要素を事前入力します。DDL ステートメントにエラーがある場合、Google Cloud コンソールでデータベースを作成しようとすると、エラーが返されます。
    • 必要に応じて、このデータベースに使用する顧客管理の暗号鍵を選択します。
  5. [作成] をクリックしてデータベースを作成します。

gcloud

gcloud spanner databases create コマンドを使用します。

gcloud spanner databases create DATABASE \
  --instance=INSTANCE \
  [--async] \
  [--database-dialect=DATABASE_DIALECT] \
  [--ddl=DDL] \
  [--ddl-file=DDL_FILE] \
  [--kms-key=KMS_KEY : --kms-keyring=KMS_KEYRING --kms-location=KMS_LOCATION --kms-project=KMS_PROJECT] \
  [GCLOUD_WIDE_FLAG …]

次のオプションは必須です。

DATABASE
データベース ID またはデータベースの完全修飾 ID。完全修飾 ID を指定する場合、--instance フラグは省略できます。
--instance=INSTANCE
データベースの Spanner インスタンス。

次のオプションは省略可能です。

--async
処理中のオペレーションの完了を待たずに、直ちにコマンドを終了します。
--database-dialect=DATABASE_DIALECT
Spanner データベースの SQL 言語。POSTGRESQL または GOOGLE_STANDARD_SQL のいずれかにする必要があります。
--ddl=DDL
新しく作成されたデータベース内で実行するセミコロン区切りの DDL(データ定義言語)ステートメント。いずれかのステートメントにエラーがある場合、データベースは作成されません。--ddl_file が設定されていると、このフラグは無視されます。PostgreSQL 言語データベースではサポートされていません。
--ddl-file=DDL_FILE
新しく作成されたデータベース内で実行するセミコロン区切りの DDL(データ定義言語)ステートメントを含むファイルのパス。いずれかのステートメントにエラーがある場合、データベースは作成されません。--ddl_file が設定されていると、--ddl は無視されます。PostgreSQL 言語データベースではサポートされていません。

データベースの作成時に使用する Cloud Key Management Service 鍵を指定する場合は、次のオプションを指定します。

--kms-key=KMS_KEY
鍵 ID または鍵の完全修飾 ID。

このグループの他の引数のいずれかが指定されている場合、このフラグを指定する必要があります。完全修飾識別子が指定されている場合、その他の引数は省略できます。

--kms-keyring=KMS_KEYRING
鍵の Cloud KMS キーリング ID。
--kms-location=KMS_LOCATION
鍵の Google Cloud ロケーション。
--kms-project=KMS_PROJECT
鍵の Google Cloud プロジェクト ID。

クライアント(GoogleSQL)

C++

Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。

Spanner への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

void CreateDatabase(google::cloud::spanner_admin::DatabaseAdminClient client,
                    std::string const& project_id,
                    std::string const& instance_id,
                    std::string const& database_id) {
  google::cloud::spanner::Database database(project_id, instance_id,
                                            database_id);
  google::spanner::admin::database::v1::CreateDatabaseRequest request;
  request.set_parent(database.instance().FullName());
  request.set_create_statement("CREATE DATABASE `" + database.database_id() +
                               "`");
  request.add_extra_statements(R"""(
      CREATE TABLE Singers (
          SingerId   INT64 NOT NULL,
          FirstName  STRING(1024),
          LastName   STRING(1024),
          SingerInfo BYTES(MAX),
          FullName   STRING(2049)
              AS (ARRAY_TO_STRING([FirstName, LastName], " ")) STORED
      ) PRIMARY KEY (SingerId))""");
  request.add_extra_statements(R"""(
      CREATE TABLE Albums (
          SingerId     INT64 NOT NULL,
          AlbumId      INT64 NOT NULL,
          AlbumTitle   STRING(MAX)
      ) PRIMARY KEY (SingerId, AlbumId),
          INTERLEAVE IN PARENT Singers ON DELETE CASCADE)""");
  auto db = client.CreateDatabase(request).get();
  if (!db) throw std::move(db).status();
  std::cout << "Database " << db->name() << " created.\n";
}

Go

Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。

Spanner への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

import (
	"context"
	"fmt"
	"io"
	"regexp"

	database "cloud.google.com/go/spanner/admin/database/apiv1"
	adminpb "cloud.google.com/go/spanner/admin/database/apiv1/databasepb"
)

func createDatabase(ctx context.Context, w io.Writer, db string) error {
	matches := regexp.MustCompile("^(.*)/databases/(.*)$").FindStringSubmatch(db)
	if matches == nil || len(matches) != 3 {
		return fmt.Errorf("Invalid database id %s", db)
	}

	adminClient, err := database.NewDatabaseAdminClient(ctx)
	if err != nil {
		return err
	}
	defer adminClient.Close()

	op, err := adminClient.CreateDatabase(ctx, &adminpb.CreateDatabaseRequest{
		Parent:          matches[1],
		CreateStatement: "CREATE DATABASE `" + matches[2] + "`",
		ExtraStatements: []string{
			`CREATE TABLE Singers (
				SingerId   INT64 NOT NULL,
				FirstName  STRING(1024),
				LastName   STRING(1024),
				SingerInfo BYTES(MAX),
				FullName   STRING(2048) AS (
					ARRAY_TO_STRING([FirstName, LastName], " ")
				) STORED
			) PRIMARY KEY (SingerId)`,
			`CREATE TABLE Albums (
				SingerId     INT64 NOT NULL,
				AlbumId      INT64 NOT NULL,
				AlbumTitle   STRING(MAX)
			) PRIMARY KEY (SingerId, AlbumId),
			INTERLEAVE IN PARENT Singers ON DELETE CASCADE`,
		},
	})
	if err != nil {
		return err
	}
	if _, err := op.Wait(ctx); err != nil {
		return err
	}
	fmt.Fprintf(w, "Created database [%s]\n", db)
	return nil
}

Java

Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。

Spanner への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。


import com.google.cloud.spanner.SpannerException;
import com.google.cloud.spanner.SpannerExceptionFactory;
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
import com.google.common.collect.ImmutableList;
import com.google.spanner.admin.database.v1.CreateDatabaseRequest;
import com.google.spanner.admin.database.v1.Database;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateDatabaseWithDefaultLeaderSample {

  static void createDatabaseWithDefaultLeader() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String instanceName = "projects/my-project/instances/my-instance-id";
    final String databaseId = "my-database-name";
    final String defaultLeader = "my-default-leader";
    createDatabaseWithDefaultLeader(instanceName, databaseId, defaultLeader);
  }

  static void createDatabaseWithDefaultLeader(String instanceName, String databaseId,
      String defaultLeader) throws IOException {
    try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
      Database createdDatabase =
          databaseAdminClient.createDatabaseAsync(
              CreateDatabaseRequest.newBuilder()
                  .setParent(instanceName)
                  .setCreateStatement("CREATE DATABASE `" + databaseId + "`")
                  .addAllExtraStatements(
                      ImmutableList.of("CREATE TABLE Singers ("
                              + "  SingerId   INT64 NOT NULL,"
                              + "  FirstName  STRING(1024),"
                              + "  LastName   STRING(1024),"
                              + "  SingerInfo BYTES(MAX)"
                              + ") PRIMARY KEY (SingerId)",
                          "CREATE TABLE Albums ("
                              + "  SingerId     INT64 NOT NULL,"
                              + "  AlbumId      INT64 NOT NULL,"
                              + "  AlbumTitle   STRING(MAX)"
                              + ") PRIMARY KEY (SingerId, AlbumId),"
                              + "  INTERLEAVE IN PARENT Singers ON DELETE CASCADE",
                          "ALTER DATABASE " + "`" + databaseId + "`"
                              + " SET OPTIONS ( default_leader = '" + defaultLeader + "' )"))
                  .build()).get();
      System.out.println("Created database [" + createdDatabase.getName() + "]");
      System.out.println("\tDefault leader: " + createdDatabase.getDefaultLeader());
    } catch (ExecutionException e) {
      // If the operation failed during execution, expose the cause.
      throw (SpannerException) e.getCause();
    } catch (InterruptedException e) {
      // Throw when a thread is waiting, sleeping, or otherwise occupied,
      // and the thread is interrupted, either before or during the activity.
      throw SpannerExceptionFactory.propagateInterrupt(e);
    }
  }
}

Node.js

Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。

Spanner への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = 'my-project-id';
// const instanceId = 'my-instance-id';
// const databaseId = 'my-database-id';
// const defaultLeader = 'my-default-leader'; example: 'asia-northeast1'

// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');

// creates a client
const spanner = new Spanner({
  projectId: projectId,
});

// Gets a reference to a Cloud Spanner Database Admin Client object
const databaseAdminClient = spanner.getDatabaseAdminClient();

async function createDatabaseWithDefaultLeader() {
  // Create a new database with an extra statement which will alter the
  // database after creation to set the default leader.
  console.log(
    `Creating database ${databaseAdminClient.databasePath(
      projectId,
      instanceId,
      databaseId
    )}.`
  );
  const createSingersTableStatement = `
    CREATE TABLE Singers (
      SingerId   INT64 NOT NULL,
      FirstName  STRING(1024),
      LastName   STRING(1024),
      SingerInfo BYTES(MAX)
    ) PRIMARY KEY (SingerId)`;
  const createAlbumsStatement = `
    CREATE TABLE Albums (
      SingerId     INT64 NOT NULL,
      AlbumId      INT64 NOT NULL,
      AlbumTitle   STRING(MAX)
    ) PRIMARY KEY (SingerId, AlbumId),
      INTERLEAVE IN PARENT Singers ON DELETE CASCADE`;

  // Default leader is one of the possible values in the leaderOptions field of the
  // instance config of the instance where the database is created.
  const setDefaultLeaderStatement = `
    ALTER DATABASE \`${databaseId}\`
    SET OPTIONS (default_leader = '${defaultLeader}')`;

  const [operation] = await databaseAdminClient.createDatabase({
    createStatement: 'CREATE DATABASE `' + databaseId + '`',
    extraStatements: [
      createSingersTableStatement,
      createAlbumsStatement,
      setDefaultLeaderStatement,
    ],
    parent: databaseAdminClient.instancePath(projectId, instanceId),
  });

  console.log(`Waiting for creation of ${databaseId} to complete...`);
  await operation.promise();
  console.log(
    `Created database ${databaseId} with default leader ${defaultLeader}.`
  );
}
createDatabaseWithDefaultLeader();

PHP

Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。

Spanner への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\CreateDatabaseRequest;

/**
 * Creates a database and tables for sample data.
 * Example:
 * ```
 * create_database($instanceId, $databaseId);
 * ```
 *
 * @param string $projectId The Google Cloud project ID.
 * @param string $instanceId The Spanner instance ID.
 * @param string $databaseId The Spanner database ID.
 */
function create_database(string $projectId, string $instanceId, string $databaseId): void
{
    $databaseAdminClient = new DatabaseAdminClient();
    $instance = $databaseAdminClient->instanceName($projectId, $instanceId);

    $operation = $databaseAdminClient->createDatabase(
        new CreateDatabaseRequest([
            'parent' => $instance,
            'create_statement' => sprintf('CREATE DATABASE `%s`', $databaseId),
            'extra_statements' => [
                'CREATE TABLE Singers (' .
                'SingerId     INT64 NOT NULL,' .
                'FirstName    STRING(1024),' .
                'LastName     STRING(1024),' .
                'SingerInfo   BYTES(MAX),' .
                'FullName     STRING(2048) AS' .
                '(ARRAY_TO_STRING([FirstName, LastName], " ")) STORED' .
                ') PRIMARY KEY (SingerId)',
                'CREATE TABLE Albums (' .
                    'SingerId     INT64 NOT NULL,' .
                    'AlbumId      INT64 NOT NULL,' .
                    'AlbumTitle   STRING(MAX)' .
                ') PRIMARY KEY (SingerId, AlbumId),' .
                'INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
            ]
        ])
    );

    print('Waiting for operation to complete...' . PHP_EOL);
    $operation->pollUntilComplete();

    printf('Created database %s on instance %s' . PHP_EOL,
        $databaseId, $instanceId);
}

Python

Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。

Spanner への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

def create_database(instance_id, database_id):
    """Creates a database and tables for sample data."""
    from google.cloud.spanner_admin_database_v1.types import \
        spanner_database_admin

    spanner_client = spanner.Client()
    database_admin_api = spanner_client.database_admin_api

    request = spanner_database_admin.CreateDatabaseRequest(
        parent=database_admin_api.instance_path(spanner_client.project, instance_id),
        create_statement=f"CREATE DATABASE `{database_id}`",
        extra_statements=[
            """CREATE TABLE Singers (
            SingerId     INT64 NOT NULL,
            FirstName    STRING(1024),
            LastName     STRING(1024),
            SingerInfo   BYTES(MAX),
            FullName   STRING(2048) AS (
                ARRAY_TO_STRING([FirstName, LastName], " ")
            ) STORED
        ) PRIMARY KEY (SingerId)""",
            """CREATE TABLE Albums (
            SingerId     INT64 NOT NULL,
            AlbumId      INT64 NOT NULL,
            AlbumTitle   STRING(MAX)
        ) PRIMARY KEY (SingerId, AlbumId),
        INTERLEAVE IN PARENT Singers ON DELETE CASCADE""",
        ],
    )

    operation = database_admin_api.create_database(request=request)

    print("Waiting for operation to complete...")
    database = operation.result(OPERATION_TIMEOUT_SECONDS)

    print(
        "Created database {} on instance {}".format(
            database.name,
            database_admin_api.instance_path(spanner_client.project, instance_id),
        )
    )

Ruby

Spanner 用のクライアント ライブラリをインストールして使用する方法については、Spanner クライアント ライブラリをご覧ください。

Spanner への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

# project_id  = "Your Google Cloud project ID"
# instance_id = "Your Spanner instance ID"
# database_id = "Your Spanner database ID"

require "google/cloud/spanner"
require "google/cloud/spanner/admin/database"

database_admin_client = Google::Cloud::Spanner::Admin::Database.database_admin

instance_path = database_admin_client.instance_path project: project_id, instance: instance_id

job = database_admin_client.create_database parent: instance_path,
                                            create_statement: "CREATE DATABASE `#{database_id}`",
                                            extra_statements: [
                                              "CREATE TABLE Singers (
      SingerId     INT64 NOT NULL,
      FirstName    STRING(1024),
      LastName     STRING(1024),
      SingerInfo   BYTES(MAX)
    ) PRIMARY KEY (SingerId)",

                                              "CREATE TABLE Albums (
      SingerId     INT64 NOT NULL,
      AlbumId      INT64 NOT NULL,
      AlbumTitle   STRING(MAX)
    ) PRIMARY KEY (SingerId, AlbumId),
    INTERLEAVE IN PARENT Singers ON DELETE CASCADE"
                                            ]

puts "Waiting for create database operation to complete"

job.wait_until_done!

puts "Created database #{database_id} on instance #{instance_id}"

データベース スキーマまたはオプションを更新する

データベース スキーマとオプションは、DDL ステートメントを使用して更新できます。

たとえば、テーブルに列を追加するには、次の DDL ステートメントを使用します。

GoogleSQL

ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);

PostgreSQL

ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);

クエリ オプティマイザーのバージョンを更新するには、次の DDL ステートメントを使用します。

GoogleSQL

ALTER DATABASE Music SET OPTIONS(optimizer_version=null);

PostgreSQL

ALTER DATABASE DB-NAME SET spanner.optimizer_version TO DEFAULT;

サポートされているオプションの詳細については、GoogleSQL または PostgreSQLALTER DATABASE DDL リファレンスをご覧ください。

スキーマの更新については、スキーマの更新をご覧ください。

Console

  1. Google Cloud コンソールの [インスタンス] ページに移動します。

    Instances

  2. 変更するデータベースが含まれているインスタンスを選択します。

  3. データベースを選択します。

  4. [Spanner Studio] をクリックします。

  5. [新しいタブ] をクリックするか、空のエディタタブを使用します。適用する DDL ステートメントを入力します。

  6. [実行] をクリックして更新を適用します。DDL にエラーがある場合、Google Cloud コンソールはエラーを返し、データベースは変更されません。

gcloud

gcloud コマンドライン ツールを使用してデータベースを変更するには、gcloud spanner databases ddl update を使用します。

gcloud spanner databases ddl update \
(DATABASE : --instance=INSTANCE) \
[--async] \
[--ddl=DDL] \
[--ddl-file=DDL_FILE] \

使用可能なオプションの詳細については、gcloud リファレンスをご覧ください。

--ddl フラグか --ddl-file フラグを使用して、データベースの更新をコマンドに渡します。DDL ファイルが指定されている場合、--ddl フラグは無視されます。

含める DDL ステートメントについては、GoogleSQL または PostgreSQLALTER DATABASE DDL リファレンスをご覧ください。

DDL

詳細については、GoogleSQL または PostgreSQLALTER DATABASE DDL リファレンスをご覧ください。

スキーマ更新オペレーションの進行状況を確認する

Console

  1. Spanner のナビゲーション メニューで [オペレーション] タブをクリックします。[オペレーション] ページに現在実行中のオペレーションのリストが表示されます。

  2. リストからスキーマ オペレーションを見つけます。まだ実行中の場合は、次の画像に示すように、[終了時間] 列の進行状況バーに、オペレーションの完了率が表示されます。

98% を示す進行状況バーのスクリーンショット

gcloud

gcloud spanner operations describe を使用してオペレーションの進行状況を確認します。

  1. オペレーション ID を取得します。

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

    以下のように置き換えます。

    • INSTANCE-NAME は、Spanner インスタンス名に置き換えます。
    • DATABASE-NAME は、データベースの名前に置き換えます。
  2. gcloud spanner operations describe を実行します。

    gcloud spanner operations describe OPERATION_ID\
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME

    以下のように置き換えます。

    • OPERATION-ID: 確認するオペレーションのオペレーション ID。
    • INSTANCE-NAME: Spanner インスタンス名。
    • DATABASE-NAME: Spanner データベース名。

    出力の progress セクションに完了したオペレーションの割合が表示されます。出力は次のようになります。

    done: true
    metadata:
    ...
      progress:
      - endTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
        startTime: '2022-03-01T00:28:04.221401Z'
      - endTime: '2022-03-01T00:28:17.624588Z'
        startTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
    ...

REST v1

  1. オペレーション ID を取得します。

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

    以下のように置き換えます。

    • INSTANCE-NAME は、Spanner インスタンス名に置き換えます。
    • DATABASE-NAME は、データベース名に置き換えます。
  2. オペレーションの進行状況を確認します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT-ID: プロジェクト ID。
    • INSTANCE-ID: インスタンス ID。
    • DATABASE-ID: データベース ID。
    • OPERATION-ID: オペレーション ID。

    HTTP メソッドと URL:

    GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    {
    ...
        "progress": [
          {
            "progressPercent": 100,
            "startTime": "2023-05-27T00:52:27.366688Z",
            "endTime": "2023-05-27T00:52:30.184845Z"
          },
          {
            "progressPercent": 100,
            "startTime": "2023-05-27T00:52:30.184845Z",
            "endTime": "2023-05-27T00:52:40.750959Z"
          }
        ],
    ...
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.protobuf.Empty"
      }
    }
    
    

オペレーションに時間がかかりすぎる場合、キャンセルできます。詳細については、長時間実行データベース オペレーションをキャンセルするをご覧ください。

データベースを削除する

データベースを完全に削除すると、データベースとそのデータがすべて削除されます。データベースの削除は元に戻せません。データベースでデータベースの削除保護が有効になっている場合、削除保護を無効にするまでそのデータベースを削除することはできません。

データベースが削除されても、既存のバックアップは削除されません。詳細については、バックアップと復元をご覧ください。

Console

  1. Google Cloud コンソールの [インスタンス] ページに移動します。

    Instances

  2. 削除するデータベースが含まれているインスタンスを選択します。

  3. データベースを選択します。

  4. [データベースを削除] をクリックします。確認メッセージが表示されます。

  5. データベース名を入力して、[削除] をクリックします。

gcloud

gcloud コマンドライン ツールを使用してデータベースを削除するには、gcloud spanner databases delete を使用します。

gcloud spanner databases delete \
  (DATABASE : --instance=INSTANCE)

次のオプションは必須です。

DATABASE
データベース ID またはデータベースの完全修飾 ID。完全修飾 ID が指定されている場合は、--instance フラグを省略する必要があります。
--instance=INSTANCE
データベースの Spanner インスタンス。

詳細については、gcloud のリファレンスをご覧ください。

DDL

DDL では、データベース削除の構文がサポートされていません。

次のステップ