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 ] } [, ...] ) }
參數
-
要加入的數據行名稱。 名稱在數據表內必須是唯一的。
除非指定 或
AFTER name
,否則FIRST
數據行或字段將會附加在結尾。 -
要加入至現有數據行之欄位的完整名稱。 巢狀欄位路徑的所有元件都必須存在,而且功能變數名稱本身必須是唯一的。
DEFAULT default_expression
適用於: Databricks SQL Databricks Runtime 11.3 LTS 和更新版本
DEFAULT
定義未指定數據行時INSERT
MERGE ... INSERT
所使用的數據行值。如果未指定預設值,
DEFAULT NULL
則表示可為 Null 的數據行隱含。default_expression
可能由常值和內建 SQL 函式或運算子組成,但下列情況除外:default_expression
不得包含任何 子查詢。DEFAULT
支援CSV
、JSON
、PARQUET
和ORC
來源。-
指定資料行或欄位的數據類型。 並非所有數據源都支援 Azure Databricks 支援的所有 數據類型 。
COMMENT comment
描述加入之數據行或欄位的選擇性
STRING
常值。如果您想要為 Unity 目錄所管理的數據表或資料表資料行新增 AI 產生的批注,請參閱 將 AI 產生的批註新增至數據表。
FIRST
如果指定,數據行將會新增為數據表的第一個數據行,或將欄位新增為包含結構中的 第一個字段。
AFTER
識別碼如果指定,欄位或欄位將會緊接在欄位或數據行
identifier
之後加入。-
適用於: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 } }
參數
-
要改變之數據行的名稱。
-
要改變之欄位的完整名稱。 巢狀欄位路徑的所有元件都必須存在。
COMMENT comment
變更數據行的描述
column_name
。comment
必須是STRING
常值。FIRST
或AFTER
標識碼將資料列從目前的位置移至前方 (
FIRST
) 或立即AFTER
。identifier
只有當 是 Delta 數據表時table_name
,才支援這個子句。SET NOT NULL
或DROP NOT NULL
將有效資料行值的定義域變更為排除 Null
SET NOT NULL
,或包含 NullDROP 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
定義未指定數據行時INSERT
MERGE ... INSERT
所使用的數據行值。如果未為可為 Null 的數據行隱
DEFAULT NULL
含任何預設值。default_expression
可能由常值、內建 SQL 函式或運算子組成,但下列情況除外:default_expression
不得包含 子查詢。DEFAULT
支援CSV
、JSON
、ORC
和PARQUET
來源。當您定義新加入數據行的預設值時,預設值會套用至所有預先存在的數據列。 如果預設值包含非確定性函式,例如
rand
,或在current_timestamp
執行 時ALTER TABLE
計算值一次,並套用為常數至既有的數據列。 對於新插入的數據列,預設表示式會針對每個數據列執行一次。當您使用
ALTER COLUMN
設定預設值時,現有的數據列不會受到該變更的影響。SET
MASK 子句適用於: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 會忽略卸除不存在的數據行嘗試。 否則,卸除不存在的數據行會造成錯誤。-
現有數據行的名稱。
-
現有欄位的完整名稱。
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 範例。