共用方式為


ALTER TABLE COLUMN 子句

適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime

新增、修改或卸除資料表中的資料行或 Delta Lake 資料表的資料行中的欄位。

所需的權限

如果您使用 Unity Catalog ,則必須具有以下項目的 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
      [ COLLATE collation_name ]
      [ DEFAULT clause ]
      [ COMMENT comment ]
      [ FIRST | AFTER identifier ]
      [ MASK clause ] } [, ...] ) }

參數

  • column_identifier

    要新增的資料行的名稱。 該名稱在資料表內必須是唯一的。

    除非指定 FIRSTAFTER name,否則資料行或欄位將會附加至結尾。

  • field_name

    要新增至現有資料行之欄位的完整名稱。 巢狀欄位路徑的所有元件都必須存在,而且欄位名稱本身必須是唯一的。

  • DEFAULT default_expression

    適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 11.3 LTS 和更新版本

    未指定資料行時,定義 DEFAULTINSERT 所使用的資料行的 MERGE ... INSERT 值。 默認表達式中的任何 STRING 常值和 STRING 函式都會使用 UTF8_BINARY 定序。

    如果未指定預設值,DEFAULT NULL 表示可為 Null 的資料行。

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

    default_expression 不得包含任何子查詢

    DEFAULTCSVJSONPARQUET 來源支援 ORC

  • data_type

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

  • COLLATE 排序名稱

    針對 data_typeSTRING,可以選擇性地指定要與列或欄位一起使用的排序規則。 如果未指定,則套用 UTF8_BINARY 定序。

  • COMMENT comment

    描述新增的資料行或欄位的選用 STRING 常值。

    如果您想要為 Unity Catalog 所管理的資料表或資料表資料行新增 AI 產生的註解,請參閱將 AI 產生的註解新增至 Unity Catalog 物件

  • FIRST

    如果指定,該資料行將會新增為資料表的第一個資料行,或該欄位將新增為包含結構中的第一個欄位。

  • AFTER 識別碼

    如果指定,該資料行或欄位將會新增至 identifier 欄位或資料行之後。

  • MASK 子句

    適用於:核取記號為「是」Databricks SQL 核取記號為「是」 Databricks Runtime 12.2 LTS 和更新版本 核取記號為「是」 僅限 Unity Catalog

    重要

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

    新增資料行 mask 函式來匿名敏感性資料。 該資料行的所有後續查詢都會收到針對資料行中該函式的評估結果,而不是該資料行的原始值。 這適用於更細緻的存取控制,其中函式可以檢查叫用使用者的身分識別或群組成員資格,以確定是否要修訂該值。

ALTER COLUMN 子句

適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime

變更屬性或資料行的位置。

語法

{ { ALTER | CHANGE } [ COLUMN ] { column_identifier | field_name }
  { COMMENT comment |
    { FIRST | AFTER column_identifier } |
    { SET | DROP } NOT NULL |
    TYPE data_type |
    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 常值。

  • FIRSTAFTER識別碼

    將資料行從目前的位置移至前面 (FIRST) 或 AFTERidentifier。 僅在 table_name 為 Delta 資料表時才支援這個子句。

  • TYPE data_type

    適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 15.2 和更新版本

    變更 column_name 資料行的資料類型。

    僅在 table_name 為 Delta 資料表時才支援這個子句。

    所有 Delta 資料表均支援下列類型變更:

    • 增加 VARCHAR 資料行的大小,例如從 VARCHAR(5) 增加到 VARCHAR(10)
    • CHAR 資料行的類型變更為 VARCHAR,例如從 CHAR(5) 變更為 VARCHAR(5)
    • CHARVARCHAR 資料行的類型變更為 STRING,例如從 VARCHAR(10) 變更為 STRING

    delta.enableTypeWidening 設定為 true 的 Delta 資料表支援下列類型變更:

    重要

    在 Databricks Runtime 15.2 和更新版本中,這項功能處於公開預覽狀態。

    來源類型 支援的更廣泛的類型
    BYTE SHORT、、 INTBIGINTDECIMALDOUBLE
    SHORT INT、 、 BIGINTDECIMALDOUBLE
    INT BIGINT、 、 DECIMALDOUBLE
    BIGINT DECIMAL, DOUBLE
    FLOAT DOUBLE
    DECIMAL 具有更大的有效位數和小數位數的 DECIMAL
    DATE TIMESTAMP_NTZ

    如需類型擴展的詳細資訊,請參閱類型擴展

  • 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 和更新版本

    未指定資料行時,定義 DEFAULTINSERT 所使用的資料行的 MERGE ... INSERT 值。

    如果未指定預設值,DEFAULT NULL 表示可為 Null 的資料行。

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

    default_expression 不得包含子查詢

    DEFAULTCSVJSONORC 來源支援 PARQUET

    當您定義新增資料行的預設值時,預設值會套用至所有預先存在的資料列。 如果預設值包含非決定性函式,例如 randcurrent_timestamp,則在執行 ALTER TABLE 時計算該值一次,並會作為常數套用至預先存在的資料列。 對於新插入的資料列,預設運算式會針對每個資料列執行一次。

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

  • SET MASK 子句

    適用於:核取記號為「是」Databricks SQL 核取記號為「是」 Databricks Runtime 12.2 LTS 和更新版本 核取記號為「是」 僅限 Unity Catalog

    重要

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

    新增資料行 mask 函式來匿名敏感性資料。 該資料行的所有後續查詢都會收到針對資料行中該函式的評估結果,而不是該資料行的原始值。 這適用於更細緻的存取控制,其中函式可以檢查叫用使用者的身分識別或群組成員資格,以確定是否要修訂該值。

  • DROP MASK

    適用於:核取記號為「是」僅限 Unity Catalog

    重要

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

    請移除此資料行的資料行 mask 函式 (如有)。 此資料行的未來查詢將會收到該資料行的原始值。

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

    適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 13.3 LTS 和更新版本

    將標籤套用至該資料行。 您需要具有 APPLY TAG 權限,才能將標籤新增至資料行。

    • tag_name

      常值 STRINGtag_name 在資料表或資料行內必須是唯一的。

    • tag_value

      常值 STRING

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

    適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 13.3 LTS 和更新版本

    從資料行中移除標籤。 您需要具有 APPLY TAG 權限,才能從資料行中移除標籤。

    • tag_name

      常值 STRINGtag_name 在資料表或資料行內必須是唯一的。

DROP COLUMN 子句

重要

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

適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 11.3 LTS 和更新版本

卸除 Delta Lake 資料表中的一或多個資料行或欄位。

當您卸除資料行或欄位時,必須卸除相依 Check 條件約束和產生的資料行。

有關需求,請參閱重新命名和卸除與 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 10.4 LTS 和更新版本

重新命名已啟用數據行對應之 Delta Lake 資料表中的數據行或字段。

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

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

語法

RENAME COLUMN { column_identifier TO to_column_identifier|
                field_name TO to_field_identifier }

參數

範例

請參閱 ALTER TABLE 範例