ALTER TABLE COLUMN 句

適用対象:「はい」のチェック マーク Databricks SQL Databricks Runtime

テーブル内の列、または Delta Lake テーブルの列のフィールドを追加、変更、または削除します。

必要なアクセス許可

Unity カタログを使用する場合、次の MODIFY アクセス許可が必要です。

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN

その他すべての操作では、テーブルの所有権が必要です。

構文

ALTER TABLE table_name
   { ADD COLUMN clause |
     ALTER COLUMN clause |
     DROP COLUMN clause |
     RENAME COLUMN clause }

ADD COLUMN 句

この句は、JDBC データ ソースではサポートされていません。

1 つ以上の列をテーブルに追加するか、Delta Lake テーブル内の既存の列にフィールドを追加します。

Note

既存の Delta テーブルに列を追加する場合、DEFAULT 値を定義することはできません。 Delta テーブルに追加されたすべての列は、既存の行の NULL として扱われます。 列を追加した後、必要に応じて列の既定値を定義できますが、これはテーブルに挿入される新しい行にのみ適用されます。 次の構文を使用します。

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression

構文

{ ADD [ COLUMN | COLUMNS ]
  ( { { column_identifier | field_name } data_type
      [ DEFAULT clause ] [ COMMENT comment ] [ FIRST | AFTER identifier ]
      [ MASK clause ] } [, ...] ) }

パラメーター

  • column_identifier

    追加する列の名前です。 名前はテーブル内で一意にする必要があります。

    FIRST または AFTER name が指定されていない限り、列またはフィールドは末尾に追加されます。

  • field_name

    既存の列に追加するフィールドの完全修飾名。 入れ子になったフィールドに対するパスのコンポーネントがすべて存在し、フィールド名自体が一意である必要があります。

  • DEFAULT default_expression

    適用対象:check marked yes Databricks SQL 「はい」のチェックマーク Databricks Runtime 11.3 LTS 以降

    列が指定されていない場合に INSERTMERGE ... INSERT で使われる列の DEFAULT 値を定義します。

    既定値が指定されていない場合、Null 許容列には DEFAULT NULL が暗黙的に使用されます。

    default_expression は、リテラル、および組み込みの SQL 関数か演算子で構成することができます。ただし、次のものは除きます。

    default_expression には、サブクエリを含めることはできません。

    DEFAULTCSVJSONPARQUET、と ORC ソースでサポートされています。

  • data_type

    列かフィールドのデータ型を指定します。 Azure Databricks でサポートされているすべてのデータ型が、すべてのデータ ソースでサポートされているわけではありません。

  • COMMENT comment

    追加された列またはフィールドを記述する省略可能な STRING リテラル。

    Unity カタログで管理されているテーブルまたはテーブル列に AI によって生成されたコメントを追加する場合は、「AI によって生成されたコメントをテーブルに追加する」を参照してください。

  • FIRST

    指定した場合、列はテーブルの最初の列として追加されます。または、フィールドが、含まれている構造体の最初のフィールドとして追加されます。

  • AFTER識別子

    指定した場合、フィールドまたは列 identifier の直後に列またはフィールドが追加されます。

  • MASK 句

    適用対象:check marked yes Databricks SQL Databricks Runtime 12.2 LTS 以降 「はい」のチェック マーク Unity Catalog のみ

    重要

    この機能はパブリック プレビュー段階にあります。

    列マスク関数を追加して、機密データを匿名化します。 今後その列からのすべてのクエリでは、列の元の値の代わりに、列に対してその関数の評価結果を受け取ります。 これは、値を編集するかどうかを決定するために呼び出したユーザーの ID やグループ メンバーシップを関数で検査できる、きめ細かいアクセス制御に役立ちます。

ALTER COLUMN 句

適用対象:「はい」のチェック マーク Databricks SQL Databricks Runtime

プロパティまたは列の場所を変更します。

構文

{ { ALTER | CHANGE } [ COLUMN ] { column_identifier | field_name }
  { COMMENT comment |
    { FIRST | AFTER column_identifier } |
    { SET | DROP } NOT NULL |
    SET DEFAULT clause |
    DROP DEFAULT |
    SYNC IDENTITY |
    SET { MASK clause } |
    DROP MASK |
    SET TAGS clause |
    UNSET TAGS clause } }

パラメーター

  • column_identifier

    変更する列の名前。

  • field_name

    変更するフィールドの完全修飾名。 入れ子になったフィールドへのパスのすべてのコンポーネントが存在する必要があります。

  • COMMENT comment

    column_name 列の説明を変更します。 comment は、STRING リテラルを指定する必要があります。

  • FIRST または AFTER識別子

    列を現在の位置から前 (FIRST) または identifier のすぐ AFTER に移動します。 この句は、table_name が Delta テーブルの場合にのみサポートされます。

  • SET NOT NULL または DROP NOT NULL

    有効な列値のドメインを変更して null を除外 (SET NOT NULL) するか、null を含め (DROP NOT NULL) ます。 このオプションは、Delta Lake テーブルでのみサポートされます。 Delta Lake では、制約が既存のすべてのデータと新しいデータに対して有効になります。

  • SYNC IDENTITY

    適用対象:check marked yes Databricks SQL 「はい」のチェック マーク Databricks Runtime 10.4 LTS 以降

    ID 列のメタデータを実際のデータと同期します。 ID 列に独自の値を書き込む場合、メタデータに準拠していない可能性があります。 このオプションでは、状態が評価され、実際のデータと一致するようにメタデータが更新されます。 このコマンドの後、次に自動的に割り当てられる ID 値は start + (n + 1) * step から開始されます。ここで、nstart + n * step >= max() を満たす最小の値です (正の手順の場合)。

    このオプションは、Delta Lake テーブルの ID 列でのみサポートされます。

  • DROP DEFAULT

    適用対象:check marked yes Databricks SQL 「はい」のチェックマーク Databricks Runtime 11.3 LTS 以降

    列から既定の式を削除します。 Null 許容列の場合、これは SET DEFAULT NULL と同じになります。 NOT NULL で定義された列の場合、今後すべての INSERT 操作で値を指定する必要があります

  • SET DEFAULT default_expression

    適用対象:check marked yes Databricks SQL 「はい」のチェックマーク Databricks Runtime 11.3 LTS 以降

    列が指定されていない場合に INSERTMERGE ... INSERT で使われる列の DEFAULT 値を定義します。

    既定値が指定されていない場合、Null 許容列には DEFAULT NULL が暗黙的に使用されます。

    default_expression は、リテラル、組み込みの SQL 関数か演算子で構成することができます。ただし、次のものは除きます。

    default_expression には、サブクエリを含めることはできません。

    DEFAULTCSVJSONORC、と PARQUET ソースでサポートされています。

    新しく追加された列の既定値を定義すると、その既定値はすべての既存の行に適用されます。 既定値に randcurrent_timestamp のような非決定論的関数が含まれている場合、その値は ALTER TABLE が実行されたときに一度だけ計算され、既存の行に定数として適用されます。 新しく挿入された行では、既定の式は行ごとに 1 回実行されます。

    ALTER COLUMN を使って既定値を設定した場合、既存の行はその変更の影響を受けません。

  • SETMASK 句

    適用対象:check marked yes Databricks SQL Databricks Runtime 12.2 LTS 以降 「はい」のチェック マーク Unity Catalog のみ

    重要

    この機能はパブリック プレビュー段階にあります。

    列マスク関数を追加して、機密データを匿名化します。 今後その列からのすべてのクエリでは、列の元の値の代わりに、列に対してその関数の評価結果を受け取ります。 これは、値を編集するかどうかを決定するために呼び出したユーザーの ID やグループ メンバーシップを関数で検査できる、きめ細かいアクセス制御に役立ちます。

  • DROP MASK

    適用対象: Unity Catalog のみ

    重要

    この機能はパブリック プレビュー段階にあります。

    この列の列マスク (存在する場合) を削除します。 今後この列からのクエリは、列の元の値を受け取ります。

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    適用対象:check marked yes Databricks SQL Databricks Runtime 13.3 LTS 以降

    列にタグを適用します。 列にタグを追加するには、apply_tag アクセス許可が必要です。

    • tag_name

      リテラル STRINGtag_name はテーブル内または列内で一意にする必要があります。

    • tag_value

      リテラル STRING

  • UNSET TAGS ( tag_name [, ...] )

    適用対象:check marked yes Databricks SQL Databricks Runtime 13.3 LTS 以降

    列からタグを削除します。 列からタグを削除するには、apply_tag アクセス許可が必要です。

    • tag_name

      リテラル STRINGtag_name はテーブル内または列内で一意にする必要があります。

DROP COLUMN 句

重要

この機能はパブリック プレビュー段階にあります。

適用対象:check marked yes Databricks SQL 「はい」のチェック マーク Databricks Runtime 11.3 LTS 以降

Delta Lake テーブルに 1 つ以上の列またはフィールドを削除します。

列またはフィールドを削除する場合は、依存 Check 制約と生成された列を削除する必要があります。

要件については、「Delta Lake の列マッピングを使用して列の名前変更と削除を行う」をご覧ください。

構文

DROP [COLUMN | COLUMNS] [ IF EXISTS ] ( { {column_identifier | field_name} [, ...] )

パラメーター

  • IF EXISTS

    IF EXISTS を指定すると、Azure Databricks は、存在しない列を削除しようとしても無視します。 それ以外の場合、存在しない列の削除によってエラーが発生します。

  • column_identifier

    既存の列の名前。

  • field_name

    既存のフィールドの完全修飾名。

RENAME COLUMN 句

重要

この機能はパブリック プレビュー段階にあります。

適用対象:check marked yes Databricks SQL 「はい」のチェック マーク Databricks Runtime 11.3 LTS 以降

Delta Lake テーブルの列またはフィールドの名前を変更します。

列またはフィールドの名前を変更する場合は、依存 Check 制約と生成された列も変更する必要があります。 当該の列を使用する主キーと外部キーはすべて削除されます。 外部キーの場合は、外部キーが定義されているテーブルを所有している必要があります。

要件については、「Delta Lake の列マッピングを使用して列の名前変更と削除を行う」をご覧ください。

構文

RENAME COLUMN { column_identifier TO to_column_identifier|
                field_name TO to_field_identifier }

パラメーター

  • column_identifier

    列の既存の名前。

  • to_column_identifier

    新しい列識別子。 識別子はテーブル内で一意である必要があります。

  • field_name

    フィールドの既存の完全修飾名。

  • to_field_identifier

    新しいフィールド識別子。 識別子は、ローカル構造体内で一意である必要があります。

「ALTER TABLE」の「例」を参照してください。