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 這個子句。

將一或多個數據行加入數據表,或字段加入至 Delta Lake 數據表中的現有數據行。

注意

當您將數據行加入現有的 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

    要加入的數據行名稱。 名稱在數據表內必須是唯一的。

    除非指定 或 AFTER name ,否則FIRST數據行或字段將會附加在結尾。

  • field_name

    要加入至現有數據行之欄位的完整名稱。 巢狀欄位路徑的所有元件都必須存在,而且功能變數名稱本身必須是唯一的。

  • DEFAULT default_expression

    適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 11.3 LTS 和更新版本

    DEFAULT定義未指定數據行時INSERTMERGE ... INSERT所使用的數據行值。

    如果未指定預設值, DEFAULT NULL 則表示可為 Null 的數據行隱含。

    default_expression 可能由常值和內建 SQL 函式或運算子組成,但下列情況除外:

    default_expression 不得包含任何 子查詢

    DEFAULT 支援 CSVJSONPARQUETORC 來源。

  • data_type

    指定資料行或欄位的數據類型。 並非所有數據源都支援 Azure Databricks 支援的所有 數據類型

  • COMMENT comment

    描述加入之數據行或欄位的選擇性 STRING 常值。

    如果您想要為 Unity 目錄所管理的數據表或資料表資料行新增 AI 產生的批注,請參閱 將 AI 產生的批註新增至數據表

  • FIRST

    如果指定,數據行將會新增為數據表的第一個數據行,或將欄位新增為包含結構中的 第一個字段。

  • AFTER識別碼

    如果指定,欄位或欄位將會緊接在欄位或數據行 identifier之後加入。

  • MASK 子句

    適用於:檢查標示為是Databricks SQL 檢查標示為是 Databricks Runtime 12.2 LTS 和更新版本檢查標示為是僅限 Unity 目錄

    重要

    這項功能處於公開預覽狀態

    新增數據行遮罩函式來匿名敏感數據。 該數據行的所有未來查詢都會收到評估該函式的結果,而該數據行會取代數據行的原始值。 這適用於細部訪問控制用途,其中函式可以檢查叫用使用者的身分識別和/或群組成員資格,以決定是否要修改值。

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_namecomment 必須是 STRING 常值。

  • FIRSTAFTER標識碼

    將資料列從目前的位置移至前方 (FIRST) 或立即 AFTERidentifier 只有當 是 Delta 數據表時 table_name ,才支援這個子句。

  • SET NOT NULLDROP NOT NULL

    將有效資料行值的定義域變更為排除 Null SET NOT NULL,或包含 Null DROP NOT NULL。 只有 Delta Lake 數據表才支援此選項。 Delta Lake 可確保條件約束適用於所有現有和新數據。

  • SYNC IDENTITY

    適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 10.4 LTS 和更新版本

    同步處理識別數據行的元數據與實際數據。 當您將自己的值寫入識別數據行時,它可能不符合元數據。 此選項會評估狀態,並更新元數據以與實際數據一致。 在此命令之後,下一個自動指派的識別值會從 start + (n + 1) * step開始,其中 n 是滿足 start + n * step >= max() 的最小值(如果是正步驟)。

    只有 Delta Lake 資料表上的識別數據行才支援此選項。

  • DROP DEFAULT

    適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 11.3 LTS 和更新版本

    從數據行中移除預設表達式。 對於可為 Null 的數據行,這相當於 SET DEFAULT NULL。 針對定義於 NOT NULL 的數據行,您需要在每個未來的 INSERT 作業上提供值

  • SET DEFAULT default_expression

    適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 11.3 LTS 和更新版本

    DEFAULT定義未指定數據行時INSERTMERGE ... INSERT所使用的數據行值。

    如果未為可為 Null 的數據行隱 DEFAULT NULL 含任何預設值。

    default_expression 可能由常值、內建 SQL 函式或運算子組成,但下列情況除外:

    default_expression 不得包含 子查詢

    DEFAULT 支援 CSVJSONORCPARQUET 來源。

    當您定義新加入數據行的預設值時,預設值會套用至所有預先存在的數據列。 如果預設值包含非確定性函式,例如 rand ,或在 current_timestamp 執行 時 ALTER TABLE 計算值一次,並套用為常數至既有的數據列。 對於新插入的數據列,預設表示式會針對每個數據列執行一次。

    當您使用 ALTER COLUMN設定預設值時,現有的數據列不會受到該變更的影響。

  • SETMASK 子句

    適用於:檢查標示為是Databricks SQL 檢查標示為是 Databricks Runtime 12.2 LTS 和更新版本檢查標示為是僅限 Unity 目錄

    重要

    這項功能處於公開預覽狀態

    新增數據行遮罩函式來匿名敏感數據。 該數據行的所有未來查詢都會收到評估該函式的結果,而該數據行會取代數據行的原始值。 這適用於細部訪問控制用途,其中函式可以檢查叫用使用者的身分識別和/或群組成員資格,以決定是否要修改值。

  • DROP MASK

    適用於:檢查標示為是 僅限 Unity 目錄

    重要

    這項功能處於公開預覽狀態

    如果有任何,請移除此數據行的數據行遮罩。 此數據行的未來查詢將會收到數據行的原始值。

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

    適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 13.3 LTS 和更新版本

    將標籤套用至數據行。 您必須具有 apply_tag 將標籤新增至資料行的許可權。

    • tag_name

      常值 STRING。 在 tag_name 數據表或數據行內必須是唯一的。

    • tag_value

      常值 STRING

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

    適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 13.3 LTS 和更新版本

    從數據行中移除標籤。 您需要有 apply_tag 許可權,才能從數據行中移除標籤。

    • tag_name

      常值 STRING。 在 tag_name 數據表或數據行內必須是唯一的。

DROP COLUMN 子句

重要

這項功能處於公開預覽狀態

適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 11.3 LTS 和更新版本

卸除 Delta Lake 數據表中的一或多個數據行或欄位。

當您卸除數據行或字段時,您必須卸除相依檢查條件約束和產生的數據行。

如需需求,請參閱 使用 Delta Lake 數據行對應來重新命名和卸除數據行。

語法

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

參數

  • IF EXISTS

    當您指定 IF EXISTS時,Azure Databricks 會忽略卸除不存在的數據行嘗試。 否則,卸除不存在的數據行會造成錯誤。

  • column_identifier

    現有數據行的名稱。

  • field_name

    現有欄位的完整名稱。

RENAME COLUMN 子句

重要

這項功能處於公開預覽狀態

適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 11.3 LTS 和更新版本

重新命名 Delta Lake 數據表中的數據行或欄位。

當您重新命名資料行或欄位時,您也需要變更相依檢查條件約束和產生的數據行。 將會卸除任何使用數據行的主鍵和外鍵。 如果是外鍵,您必須擁有定義外鍵的數據表。

如需需求,請參閱 使用 Delta Lake 數據行對應來重新命名和卸除數據行。

語法

RENAME COLUMN { column_identifier TO to_column_identifier|
                field_name TO to_field_identifier }

參數

範例

請參閱 ALTER TABLE 範例