ALTER TABLE ... clausola COLUMN
Si applica a: Databricks SQL
Databricks Runtime
Aggiunge, modifica o elimina un column in un table o un campo in un column in un Delta Lake table.
Autorizzazioni necessarie
Se si usa Unity Catalog è necessario disporre dell'autorizzazione MODIFY
per:
- ALTER COLUMN
- ADD COLUMN
- DROP COLUMN
Tutte le altre operazioni richiedono la proprietà del table.
Sintassi
ALTER TABLE table_name
{ ADD COLUMN clause |
ALTER COLUMN clause |
DROP COLUMN clause |
RENAME COLUMN clause }
clausola AGGIUNGI COLUMN
Questa clausola non è supportata per le JDBC
origini dati.
Aggiunge uno o più columns a tableo campi alle columns esistenti in un Delta Lake table.
Nota
Quando si aggiunge un column a un tableDelta esistente, non è possibile definire un valore DEFAULT
. Tutte le columns aggiunte a Delta tables vengono considerate come NULL
per le righe esistenti. Dopo aver aggiunto un column, è possibile definire facoltativamente un valore predefinito per il column, ma viene applicato solo per le nuove righe inserite nel table. Usare la sintassi seguente:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
Sintassi
{ ADD [ COLUMN | COLUMNS ]
( { { column_identifier | field_name } data_type
[ COLLATE collation_name ]
[ DEFAULT clause ]
[ COMMENT comment ]
[ FIRST | AFTER identifier ]
[ MASK clause ] } [, ...] ) }
Parameters
-
Nome del column da aggiungere. Il nome deve essere univoco all'interno del table.
A meno che non venga specificato
FIRST
oAFTER name
il column o il campo verrà accodato alla fine. -
Nome completo del campo da aggiungere a un columnesistente. Tutti i componenti del percorso del campo annidato devono esistere e il nome del campo stesso deve essere univoco.
DEFAULT default_expression
Si applica a:
Databricks SQL
Databricks Runtime 11.3 LTS e versioni successive
Definisce un valore di
DEFAULT
per l'column utilizzata inINSERT
eMERGE ... INSERT
quando il column non viene specificato. I valori letteraliSTRING
e le funzioniSTRING
nell'espressione predefinita useranno le regole di confrontoUTF8_BINARY
.Se non viene specificato alcun valore predefinito,
DEFAULT NULL
è implicito per columnsnullable.default_expression
può essere composto da valori letterali e funzioni o operatori SQL predefiniti, ad eccezione di:- Funzioni di aggregazione
- funzioni window analitiche
- funzioni di window classificazione
- Table funzioni del generatore con valori
default_expression
non deve contenere alcuna sottoquery.DEFAULT
è supportato per le originiCSV
,JSON
,PARQUET
, eORC
.-
Specifica il tipo di dati del column o del campo. Non tutti i tipi di dati supportati da Azure Databricks sono supportati da tutte le origini dati.
COLLATE
collation_namePer
data_type
STRING
facoltativamente specifica le regole di confronto da utilizzare con il campo o il column. Se non specificato, si applica l'ordinamentoUTF8_BINARY
.COMMENT comment
Valore letterale
STRING
facoltativo che descrive l'column o il campo aggiunto.Per aggiungere un commento generato dall'intelligenza artificiale per un table o un tablecolumn gestito da Unity Catalog, vedere Aggiungere commenti generati dall'intelligenza artificiale agli oggetti Catalog Unity.
FIRST
Se specificato, il column verrà aggiunto come primo column del table, altrimenti il campo verrà aggiunto come primo campo nello struct contenitore.
AFTER
identifierSe il column o il campo specificato viene indicato, verrà aggiunto immediatamente dopo il campo oppure column
identifier
.-
Si applica a:
Databricks SQL
Databricks Runtime 12.2 LTS e versioni successive
solo Unity Catalog
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Aggiunge una funzione maschera column per rendere anonimi i dati sensibili. Tutte le query successive da tale column riceveranno il risultato dell'applicazione di quella funzione su column al posto del valore originale di column. Ciò può essere utile per scopi di controllo di accesso con granularità fine where la funzione può esaminare l'identità o le appartenenze ai gruppi dell'utente che richiama per determinare se redigire il valore.
clausola ALTER COLUMN
Si applica a: Databricks SQL
Databricks Runtime
Modifica la proprietà o la posizione di un column.
Sintassi
{ { 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 } }
Parameters
-
Nome del column da modificare.
-
Nome completo del campo da modificare. Tutti i componenti del percorso del campo annidato devono esistere.
COMMENT comment
Modifica la descrizione del
column_name
column.comment
deve essere un valoreSTRING
letterale.FIRST
oppureAFTER
identifierSposta il column dalla posizione corrente alla parte anteriore (
FIRST
) o immediatamenteAFTER
ilidentifier
. Questa clausola è supportata solo setable_name
è un tableDelta.TYPE
data_typeSi applica a:
Databricks SQL
Databricks Runtime 15.2 e versioni successive
Modifica il tipo di dati del
column_name
column.Questa clausola è supportata solo se
table_name
è un tableDelta.Per tutte le tablesDelta sono supportate le modifiche di tipo seguenti:
- Aumento delle dimensioni di un
VARCHAR
column, ad esempio daVARCHAR(5)
aVARCHAR(10)
- Modifica del tipo di un
CHAR
column in unVARCHAR
, ad esempio daCHAR(5)
aVARCHAR(5)
- Modifica del tipo di un
CHAR
o di unVARCHAR
column inSTRING
, ad esempio, daVARCHAR(10)
aSTRING
.
Le modifiche di tipo seguenti sono supportate per Delta tables da
delta.enableTypeWidening
set atrue
:Importante
Questa funzionalità è disponibile in anteprima pubblica in Databricks Runtime 15.2 e versioni successive.
Tipo di origine Altri tipi supportati BYTE
SHORT
,INT
,BIGINT
,DECIMAL
DOUBLE
SHORT
INT
,BIGINT
,DECIMAL
DOUBLE
INT
BIGINT
,DECIMAL
,DOUBLE
BIGINT
DECIMAL
,DOUBLE
FLOAT
DOUBLE
DECIMAL
DECIMAL
con maggiore precisione e scalaDATE
TIMESTAMP_NTZ
Per informazioni più dettagliate sull'estensione dei tipi, vedere Estensione dei tipi.
- Aumento delle dimensioni di un
SET NOT NULL
oppureDROP NOT NULL
Modifica il dominio di validità di columnvalues per escludere i valori null
SET NOT NULL
o includere i valori nullDROP NOT NULL
. Questa opzione è supportata solo per Delta Lake tables. Delta Lake garantisce che il constraint sia valido per tutti i dati nuovi e esistenti.SYNC IDENTITY
Si applica a:
Databricks SQL
Databricks Runtime 10.4 LTS e versioni successive
Sincronizzare i metadati di un'identità column con i dati effettivi. Quando si scrive il proprio values su un'identità column, potrebbe non allinearsi ai metadati. Questa opzione valuta lo stato e aggiorna i metadati in modo che siano coerenti con i dati effettivi. Dopo questo comando, il prossimo valore di identità assegnato automaticamente inizierà da
start + (n + 1) * step
. wheren
è il valore più piccolo che soddisfastart + n * step >= max()
(per un passo positivo).Questa opzione è supportata solo per l'identità columns su Delta Lake tables.
DROP DEFAULT
Si applica a:
Databricks SQL
Databricks Runtime 11.3 LTS e versioni successive
Rimuove l'espressione predefinita dal column. Per columns nullable equivale a
SET DEFAULT NULL
. Per columns definito conNOT NULL
è necessario fornire un valore per ogni operazioneINSERT
futuraSET DEFAULT default_expression
Si applica a:
Databricks SQL
Databricks Runtime 11.3 LTS e versioni successive
Definisce un valore di
DEFAULT
per l'column utilizzata inINSERT
eMERGE ... INSERT
quando il column non viene specificato.Se non viene specificato alcun valore predefinito
DEFAULT NULL
è implicito per columnsnullable.default_expression
può essere composto da valori letterali, funzioni SQL predefinite o operatori ad eccezione di:- Funzioni di aggregazione
- funzioni window analitiche
- funzioni di window classificazione
- Table funzioni del generatore con valori
default_expression
non deve contenere una sottoquery.DEFAULT
è supportato per le originiCSV
,JSON
,ORC
, ePARQUET
.Quando si definisce l'impostazione predefinita per un columnappena aggiunto, l'impostazione predefinita si applica a tutte le righe preesistenti. Se il valore predefinito include una funzione non deterministica,
rand
ad esempio ocurrent_timestamp
il valore, viene calcolato una volta quandoALTER TABLE
viene eseguito e applicato come costante alle righe preesistenti. Per le righe appena inserite, l'espressione predefinita viene eseguita una volta per ogni riga.Quando si set un'impostazione predefinita usando
ALTER COLUMN
, le righe esistenti non sono interessate da tale modifica.SET
Clausola MASKSi applica a:
Databricks SQL
Databricks Runtime 12.2 LTS e versioni successive
solo Unity Catalog
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Aggiunge una funzione maschera column per rendere anonimi i dati sensibili. Tutte le query successive da quel column riceveranno, al posto del valore originale di column, il risultato della valutazione di quella funzione su column. Ciò può essere utile per scopi di controllo di accesso con granularità fine where la funzione può esaminare l'identità o le appartenenze ai gruppi dell'utente che richiama per determinare se redigire il valore.
DROP MASK
Si applica a:
Unity Catalog
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Rimuove la maschera column per questo column, se presente. Le future richieste provenienti da questo column riceveranno il valuesoriginale del column.
SET TAGS ( { tag_name = tag_value } [, ...] )
Si applica a:
Databricks SQL
Databricks Runtime 13.3 LTS e versioni successive
Applicare tag al column. È necessario disporre dell'autorizzazione
APPLY TAG
per aggiungere tag al column.tag_name
Valore letterale
STRING
. Iltag_name
deve essere univoco all'interno del table o column.tag_value
Valore letterale
STRING
.
UNSET TAGS ( tag_name [, ...] )
Si applica a:
Databricks SQL
Databricks Runtime 13.3 LTS e versioni successive
Remove tag dal column. È necessario disporre dell'autorizzazione
APPLY TAG
per remove tag da column.tag_name
Valore letterale
STRING
. Iltag_name
deve essere univoco all'interno del table o column.
DROP COLUMN clausola
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Si applica a: Databricks SQL
Databricks Runtime 11.3 LTS e versioni successive
Eliminare uno o più campi columns o in un tableDelta Lake.
Quando si rilascia un column o un campo, è necessario eliminare i vincoli di verifica dipendenti e i columnsgenerati.
Per i requisiti, vedere Rinominare ed eliminare columns con il mapping di Delta Lake column.
Sintassi
DROP [COLUMN | COLUMNS] [ IF EXISTS ] ( { {column_identifier | field_name} [, ...] )
Parameters
IF EXISTS
Quando si specifica
IF EXISTS
, Azure Databricks ignora un tentativo di eliminare columns che non esistono. In caso contrario, l'eliminazione di columns inesistente causerà un errore.-
Nome del columnesistente.
-
Nome completo di un campo esistente.
clausola RENAME COLUMN
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Si applica a: Databricks SQL
Databricks Runtime 10.4 LTS e versioni successive
Rinomina un column o un campo in un Delta Lake table abilitato per la mappatura column.
Quando si rinomina un column o un campo, è necessario modificare i vincoli di controllo dipendenti e gli columnsgenerati. Tutte le chiavi primarie e le chiavi esterne che usano il column verranno eliminate. Nel caso di chiavi esterne, è necessario possedere il table in cui è definita la chiave esterna.
Per i requisiti e come abilitare il mapping di column, vedere Rinominare ed eliminare columns con il mapping di Delta Lake column.
Sintassi
RENAME COLUMN { column_identifier TO to_column_identifier|
field_name TO to_field_identifier }
Parameters
-
Nome esistente del column.
-
Il nuovo columnidentifier. Il identifier deve essere univoco all'interno del table.
-
Nome completo esistente di un campo.
-
Il nuovo campo identifier. Il identifier deve essere univoco all'interno dello struct locale.
Esempi
Vedi ALTER TABLE esempi.