ALTER TABLE ... COLUMN-sats
Gäller för: Databricks SQL
Databricks Runtime
Lägger till, ändrar eller släpper en kolumn i en tabell eller ett fält i en kolumn i en Delta Lake-tabell.
Behörigheter som krävs
Om du använder Unity Catalog måste du ha MODIFY
behörighet att:
- ÄNDRA COLUMN
- LÄGG TILL COLUMN
- SLÄPP COLUMN
Alla andra åtgärder kräver ägande av tabellen.
Syntax
ALTER TABLE table_name
{ ADD COLUMN clause |
ALTER COLUMN clause |
DROP COLUMN clause |
RENAME COLUMN clause }
ADD COLUMN klausul
Den här satsen stöds inte för JDBC
datakällor.
Lägger till en eller flera kolumner i tabellen eller fält till befintliga kolumner i en Delta Lake-tabell.
Kommentar
När du lägger till en kolumn i en befintlig Delta-tabell kan du inte definiera ett DEFAULT
värde. Alla kolumner som läggs till i Delta-tabeller behandlas som NULL
för befintliga rader. När du har lagt till en kolumn kan du definiera ett standardvärde för kolumnen, men detta tillämpas bara för nya rader som infogas i tabellen. Använd följande syntax:
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
Syntax
{ ADD [ COLUMN | COLUMNS ]
( { { column_identifier | field_name } data_type
[ COLLATE collation_name ]
[ DEFAULT clause ]
[ COMMENT comment ]
[ FIRST | AFTER identifier ]
[ MASK clause ] } [, ...] ) }
Parametrar
-
Namnet på kolumnen som ska läggas till. Namnet måste vara unikt i tabellen.
Om inte
FIRST
ellerAFTER name
anges läggs kolumnen eller fältet till i slutet. -
Det fullständigt kvalificerade namnet på det fält som ska läggas till i en befintlig kolumn. Alla komponenter i sökvägen till det kapslade fältet måste finnas och själva fältnamnet måste vara unikt.
DEFAULT default_expression
Gäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senare
Definierar ett
DEFAULT
värde för kolumnen som används påINSERT
ochMERGE ... INSERT
när kolumnen inte har angetts. AllaSTRING
literaler ochSTRING
funktioner i standarduttrycket använderUTF8_BINARY
sortering.Om inget standardvärde anges är
DEFAULT NULL
underförstått för nullbara kolumner.default_expression
kan bestå av literaler och inbyggda SQL-funktioner eller -operatorer förutom:- Mängdfunktioner
- analytiska fönsterfunktioner
- Funktioner för rangordningsfönster
- Generatorfunktioner som returnerar tabellvärden
default_expression
får inte innehålla någon underfråga.DEFAULT
stöds förCSV
,JSON
,PARQUET
ochORC
källor.-
Anger datatypen för kolumnen eller fältet. Alla datatyper som stöds av Azure Databricks stöds inte av alla datakällor.
COLLATE
collation_nameFör
data_type
STRING
kan du välja att ange sortering som ska användas med kolumnen eller fältet. Om det inte specificeras gällerUTF8_BINARY
-kollationering.COMMENT comment
En valfri
STRING
literal som beskriver den tillagda kolumnen eller fältet.Om du vill lägga till en AI-genererad kommentar för en tabell- eller tabellkolumn som hanteras av Unity Catalog kan du läsa Lägga till AI-genererade kommentarer till Unity Catalog-objekt.
FIRST
Om det anges läggs kolumnen till som den första kolumnen i tabellen, eller så läggs fältet till som det första fältet i i den innehållande structen.
AFTER
identifierareOm det anges läggs kolumnen eller fältet till omedelbart efter fältet eller kolumnen
identifier
.-
Gäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare
Unity Catalog
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Lägger till en kolumnmaskfunktion för att anonymisera känsliga data. Alla efterföljande frågor från den kolumnen får resultatet av utvärderingen av funktionen över kolumnen i stället för kolumnens ursprungliga värde. Detta kan vara användbart för detaljerad åtkomstkontroll där funktionen kan kontrollera identitets- eller gruppmedlemskapen för den anropande användaren för att avgöra om värdet ska redigeras.
ALTER COLUMN-sats
Gäller för: Databricks SQL
Databricks Runtime
Ändrar en egenskap eller platsen för en kolumn.
Syntax
{ { 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 } }
Parametrar
-
Namnet på kolumnen som ska ändras.
-
Det fullständigt kvalificerade namnet på fältet som ska ändras. Alla komponenter i sökvägen till det kapslade fältet måste finnas.
COMMENT comment
Ändrar beskrivningen av kolumnen
column_name
.comment
måste vara enSTRING
literal.FIRST
ellerAFTER
identifierareFlyttar kolumnen från dess aktuella position till framsidan (
FIRST
) eller omedelbartAFTER
identifier
. Den här satsen stöds endast omtable_name
är en Delta-tabell.TYPE
data_typeGäller för:
Databricks SQL
Databricks Runtime 15.2 och senare
Ändrar datatypen för kolumnen
column_name
.Den här satsen stöds endast om
table_name
är en Delta-tabell.Följande typändringar stöds för alla Delta-tabeller:
- Öka storleken på en
VARCHAR
kolumn, till exempel frånVARCHAR(5)
tillVARCHAR(10)
- Ändra typen av en
CHAR
kolumn till enVARCHAR
, till exempel frånCHAR(5)
tillVARCHAR(5)
- Ändra typen för en
CHAR
- ellerVARCHAR
-kolumn tillSTRING
, till exempel frånVARCHAR(10)
tillSTRING
.
Följande typändringar stöds för Delta-tabeller med
delta.enableTypeWidening
inställt påtrue
:Viktigt!
Den här funktionen finns i offentlig förhandsversion i Databricks Runtime 15.2 och senare.
Source type Bredare typer som stöds BYTE
SHORT
,INT
,BIGINT
, , ,DECIMAL
DOUBLE
SHORT
INT
,BIGINT
, ,DECIMAL
DOUBLE
INT
BIGINT
, ,DECIMAL
DOUBLE
BIGINT
DECIMAL
,DOUBLE
FLOAT
DOUBLE
DECIMAL
DECIMAL
med större precision och skalningDATE
TIMESTAMP_NTZ
Mer detaljerad information om typbreddning finns i Typbreddning.
- Öka storleken på en
SET NOT NULL
ellerDROP NOT NULL
Ändrar domänen för giltiga kolumnvärden för att exkludera nullvärden
SET NOT NULL
, eller inkludera null-värdenDROP NOT NULL
. Det här alternativet stöds endast för Delta Lake-tabeller. Delta Lake ser till att villkoret är giltigt för alla befintliga och nya data.SYNC IDENTITY
Gäller för:
Databricks SQL
Databricks Runtime 10.4 LTS och senare
Synkronisera metadata för en identitetskolumn med faktiska data. När du skriver dina egna värden till en identitetskolumn kanske den inte överensstämmer med metadata. Det här alternativet utvärderar tillståndet och uppdaterar metadata så att de överensstämmer med faktiska data. Efter det här kommandot börjar nästa automatiskt tilldelade identitetsvärde från
start + (n + 1) * step
, därn
är det minsta värdet som uppfyllerstart + n * step >= max()
(för ett positivt steg).Det här alternativet stöds endast för identitetskolumner i Delta Lake-tabeller.
DROP DEFAULT
Gäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senare
Tar bort standarduttrycket från kolumnen. För null-kolumner motsvarar detta
SET DEFAULT NULL
. För kolumner som definierats medNOT NULL
måste du ange ett värde för varje framtidaINSERT
åtgärdSET DEFAULT default_expression
Gäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senare
Definierar ett
DEFAULT
värde för kolumnen som används påINSERT
ochMERGE ... INSERT
när kolumnen inte har angetts.Om inget standardvärde anges
DEFAULT NULL
är underförstått för nullbara kolumner.default_expression
kan bestå av literaler, inbyggda SQL-funktioner eller operatorer förutom:- Mängdfunktioner
- Analytiska fönsterfunktioner
- Funktioner för rangordningsfönster
- Generatorfunktioner för tabellvärden
default_expression
får inte innehålla en underfråga.DEFAULT
stöds förCSV
,JSON
,ORC
ochPARQUET
källor.När du definierar standardvärdet för en nyligen tillagda kolumn gäller standardvärdet för alla befintliga rader. Om standardvärdet innehåller en icke-deterministisk funktion, till exempel
rand
ellercurrent_timestamp
om värdet beräknas en gång närALTER TABLE
den körs, och tillämpas som en konstant på befintliga rader. För nyligen infogade rader körs standarduttrycket en gång per rad.När du anger en standardinställning med
ALTER COLUMN
påverkas inte befintliga rader av den ändringen.SET
MASK-satsgäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare
Unity Catalog endast
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Lägger till en kolumnmaskfunktion för att anonymisera känsliga data. Alla efterföljande frågor från den kolumnen får resultatet av utvärderingen av funktionen över kolumnen i stället för kolumnens ursprungliga värde. Detta kan vara användbart för detaljerad åtkomstkontroll där funktionen kan kontrollera identitets- eller gruppmedlemskapen för den anropande användaren för att avgöra om värdet ska redigeras.
DROP MASK
Gäller för:
endast för Unity-katalogen
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Tar bort kolumnmasken för den här kolumnen, om någon. Framtida frågor från den här kolumnen tar emot kolumnens ursprungliga värden.
SET TAGS ( { tag_name = tag_value } [, ...] )
Gäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senare
Använd taggar i kolumnen. Du måste ha
APPLY TAG
behörighet att lägga till taggar i kolumnen.tag_name
En literal
STRING
.tag_name
måste vara unik i tabellen eller kolumnen.tag_value
En literal
STRING
.
UNSET TAGS ( tag_name [, ...] )
Gäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senare
Ta bort taggar från kolumnen. Du måste ha
APPLY TAG
behörighet att ta bort taggar från kolumnen.tag_name
En literal
STRING
. Etttag_name
måste vara unikt i tabellen eller kolumnen.
DROP COLUMN-klausul
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Gäller för: Databricks SQL
Databricks Runtime 11.3 LTS och senare
Släpp en eller flera kolumner eller fält i en Delta Lake-tabell.
När du släpper en kolumn eller ett fält måste du släppa beroende kontrollbegränsningar och genererade kolumner.
För krav, se Byt namn på och släpp kolumner med Delta Lake-kolumnmappning.
Syntax
DROP [COLUMN | COLUMNS] [ IF EXISTS ] ( { {column_identifier | field_name} [, ...] )
Parametrar
IF EXISTS
När du anger
IF EXISTS
ignorerar Azure Databricks ett försök att släppa kolumner som inte finns. Att ta bort icke-existerande kolumner orsakar annars ett fel.-
Namnet på den befintliga kolumnen.
-
Det fullständigt kvalificerade namnet på ett befintligt fält.
RENAME COLUMN-sats
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Gäller för: Databricks SQL
Databricks Runtime 10.4 LTS och senare
Byter namn på en kolumn eller ett fält i en Delta Lake-tabell som är aktiverad för kolumnmappning.
När du byter namn på en kolumn eller ett fält måste du också ändra beroende kontrollbegränsningar och genererade kolumner. Alla primära nycklar och främmande nycklar som använder kolumnen kommer att tas bort. Om det gäller sekundärnycklar måste du äga tabellen där sekundärnyckeln har definierats.
För krav och hur du aktiverar kolumnmappning, se Byt namn på och ta bort kolumner med Delta Lake kolumnmappning.
Syntax
RENAME COLUMN { column_identifier TO to_column_identifier|
field_name TO to_field_identifier }
Parametrar
-
Det befintliga namnet på kolumnen.
-
Den nya kolumnidentifieraren. Identifieraren måste vara unik i tabellen.
-
Det befintliga fullständigt kvalificerade namnet på ett fält.
-
Den nya fältidentifieraren. Identifieraren måste vara unik i den lokala structen.