ALTER TABLE

Gilt für:mit Häkchen ja markiert Databricks SQL mit Häkchen ja markiert Databricks Runtime

Ändert das Schema oder die Eigenschaften einer Tabelle.

Der ALTER TABLE Befehl wird für temporäre Tabellen nicht unterstützt. Wenn der ALTER TABLE Befehl auf eine temporäre Tabelle angewendet wird, wird ein Fehler zurückgegeben. Wenn die Tabelle zwischengespeichert wurde, löscht der Befehl zwischengespeicherte Daten der Tabelle und alle abhängigen Daten, die darauf verweisen. Der Cache wird beim nächsten Zugriff auf die Tabelle oder die abhängigen Daten verzögert gefüllt.

Bei Fremdtabellen können Sie nur ausführen ALTER TABLE SET OWNER und ALTER TABLE RENAME TO.

Erforderliche Berechtigungen

Wenn Sie Unity Catalog verwenden, müssen Sie über die MODIFY-Berechtigung für Folgendes verfügen:

  • ALTER COLUMN
  • ADD COLUMN
  • DROP COLUMN
  • SET TBLPROPERTIES
  • UNSET TBLPROPERTIES
  • PREDICTIVE OPTIMIZATION

Wenn Sie Unity Catalog verwenden, müssen Sie über die MANAGE-Berechtigung oder den Besitz verfügen für:

  • SET OWNER TO

Für alle anderen Vorgänge müssen Sie Eigentümer der Tabelle sein.

Syntax

ALTER TABLE table_name
    { RENAME TO clause |
      ADD COLUMN clause |
      ALTER COLUMN clause |
      DROP COLUMN clause |
      RENAME COLUMN clause |
      DEFAULT COLLATION clause |
      ADD CONSTRAINT clause |
      DROP CONSTRAINT clause |
      DROP FEATURE clause |
      ADD PARTITION clause |
      DROP PARTITION clause |
      PARTITION SET LOCATION clause |
      RENAME PARTITION clause |
      RECOVER PARTITIONS clause |
      SET { ROW FILTER clause } |
      DROP ROW FILTER |
      SET TBLPROPERTIES clause |
      UNSET TBLPROPERTIES clause |
      SET SERDE clause |
      SET LOCATION clause |
      SET OWNER TO clause |
      SET SERDE clause |
      SET TAGS clause |
      UNSET TAGS clause |
      CLUSTER BY clause |
      PREDICTIVE OPTIMIZATION clause}

Parameter

  • table_name

    Gibt die Tabelle an, die geändert wird. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten. Wenn die Tabelle nicht gefunden werden kann, löst Azure Databricks einen TABLE_OR_VIEW_NOT_FOUND Fehler aus.

  • RENAME TO to_table_name

    Benennt die Tabelle um.

    • to_table_name

      Gibt den neuen Tabellennamen an. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten.

      Für Unity-Katalogtabellen muss sich die to_table_name Tabelle innerhalb desselben Katalogs befinden wie table_name. Für andere Tabellen muss to_table_name innerhalb desselben Schemas wie table_name liegen.

      Wenn to_table_name nicht qualifiziert ist, wird es implizit mit dem aktuellen Schema qualifiziert.

    > ALTER TABLE student RENAME TO student_info;
    
  • HINZUFÜGEN COLUMN

    Fügt der Tabelle mindestens eine Spalte hinzu.

    Wenn Sie einer vorhandenen Delta Lake-Tabelle eine Spalte hinzufügen, können Sie keinen DEFAULT Wert definieren. Alle Spalten, die Delta Lake-Tabellen hinzugefügt werden, werden wie NULL für vorhandene Zeilen behandelt. Nach dem Hinzufügen einer Spalte können Sie optional einen Standardwert für neue Zeilen mithilfe von ALTER COLUMN.

    > DESCRIBE StudentInfo;
                    col_name data_type comment
    ----------------------- --------- -------
                        name    string    NULL
                      rollno       int    NULL
                         age       int    NULL
    
    > ALTER TABLE StudentInfo ADD columns (LastName string, DOB timestamp);
    
    -- After adding new columns to the table
    > DESCRIBE StudentInfo;
                    col_name data_type comment
    ----------------------- --------- -------
                        name    string    NULL
                      rollno       int    NULL
                    LastName    string    NULL
                         DOB timestamp    NULL
                         age       int    NULL
    
    -- Optionally set a default value for new rows
    > ALTER TABLE StudentInfo ALTER COLUMN LastName SET DEFAULT 'unknown';
    

  • ÄNDERN COLUMN

    Ändert eine Eigenschaft oder die Position einer Spalte.

    > DESCRIBE StudentInfo;
                    col_name data_type comment
    ----------------------- --------- -------
                        name    string    NULL
                      rollno       int    NULL
                    LastName    string    NULL
                         DOB timestamp    NULL
                         age       int    NULL
    
    > ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment";
    
    -- After altering the column
    > DESCRIBE StudentInfo;
                    col_name data_type     comment
    ----------------------- --------- -----------
                        name    string new comment
                      rollno       int        NULL
                    LastName    string        NULL
                         DOB timestamp        NULL
                         age       int        NULL
    

    Ändern mehrerer Spalten in einer einzelnen Anweisung:

    -- Create a table with 3 columns
    > CREATE TABLE my_table (num INT, str STRING, bool BOOLEAN) TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'supported')
    > DESCRIBE TABLE my_table;
      col_name    data_type     comment
      --------    ---------     -------
           num          int        null
           str       string        null
           bool      boolean       null
    
    -- Update comments on multiple columns
    > ALTER TABLE table ALTER COLUMN
       num COMMENT 'number column',
       str COMMENT 'string column';
    
    > DESCRIBE TABLE my_table;
      col_name    data_type      comment
      --------    ---------   -------------
           num          int   number column
           str       string   string column
          bool      boolean            null
    
    -- Can mix different types of column alter
    > ALTER TABLE table ALTER COLUMN
       bool COMMENT 'boolean column',
       num AFTER bool,
       str AFTER num,
       bool SET DEFAULT true;
    
    > DESCRIBE TABLE my_table;
      col_name    data_type      comment
      --------    ---------   --------------
          bool      boolean   boolean column
           num          int    number column
           str       string    string column
    
  • LÖSCHEN COLUMN

    Entfernen Sie eine oder mehrere Spalten oder Felder aus einer Delta Lake-Tabelle.

  • UMBENENNEN COLUMN

    Benennt eine Spalte oder ein Feld in einer Delta Lake-Tabelle um.

    > ALTER TABLE StudentInfo RENAME COLUMN name TO FirstName;
    
    -- After renaming the column
    > DESCRIBE StudentInfo;
                    col_name data_type     comment
    ----------------------- --------- -----------
                   FirstName    string new comment
                      rollno       int        NULL
                    LastName    string        NULL
                         DOB timestamp        NULL
                         age       int        NULL
    

  • ADD CONSTRAINT

    Fügt der Tabelle eine Prüfbedingung, eine informationsbasierte Fremdschlüsseleinschränkung oder eine informationsbasierte Primärschlüsseleinschränkung hinzu.

    Fremdschlüssel und Primärschlüssel werden nur für Tabellen in Unity Catalog unterstützt, nicht im hive_metastore-Katalog.

  • DEFAULT COLLATION Collation_name

    Gilt für:ja markiert Databricks SQL ja markiert Databricks Runtime 16.3 und höher

    Ändert die Standardsortierung der Tabelle für neue STRING Spalten. Vorhandene Spalten sind von dieser Klausel nicht betroffen. Um die Sortierung einer vorhandenen Spalte zu ändern, verwenden Sie ALTER TABLE ... ALTER COLUMN ... COLLATE collation_name.

  • DROP CONSTRAINT

    Entfernt einen Primärschlüssel, Fremdschlüssel oder CHECK-Constraint von der Tabelle.

  • DROP FEATURE feature_name [ TRUNCATE HISTORY ]

    Gilt für:mit Häkchen markiert: Ja Databricks Runtime 14.3 LTS und höher

    Legacyunterstützung für DROP FEATURE ist ab Databricks Runtime 14.3 LTS verfügbar. Dokumentation zur Legacyfunktionalität finden Sie unter Entfernen von Delta-Tabellenfeatures (Legacy).

    Gilt für:ja markiert Databricks SQL ja markiert Databricks Runtime 16.3 und höher

  • Azure Databricks empfiehlt die Verwendung von Databricks Runtime 16.3 und höher für alle DROP FEATURE Befehle, die das Legacyverhalten ersetzen.

    Entfernt ein Feature aus einer Delta Lake-Tabelle.

    Das Entfernen eines Features kann dazu führen, dass das checkpointProtection Writer-Feature im Tabellenprotokoll hinzugefügt wird. Weitere Informationen finden Sie unter Drop Delta-Tabellenfeatures und Tabellenfeatures zur Protokollkompatibilität.

    • feature_name

      Der Name eines Features in Form eines STRING-Literals oder Bezeichners, der von Azure Databricks verstanden und in der Tabelle unterstützt werden muss.

      Wenn das Feature nicht in der Tabelle vorhanden ist, löst Azure Databricks DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT aus.

    • VERLAUF ABSCHNEIDEN

      Entfernen von Features durch Abschneiden des Verlaufs. Dies erfordert einen zweistufigen Prozess:

Das Entfernen von Features durch Abschneiden des Verlaufs erfordert einen zweistufigen Prozess:

  • Der erste Aufruf löscht Spuren des Features und informiert Sie über teilweiser Erfolg.

  • Warten Sie dann, bis der Aufbewahrungszeitraum endet, bevor Sie die Anweisung erneut ausführen, um die Entfernung abzuschließen.

    Wenn Sie den zweiten Aufruf zu früh initiieren, löst Azure Databricks DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD oder DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST aus.

    Durch das Abschneiden des Tabellenverlaufs können Sie DESCRIBE HISTORY ausführen und Zeitreisenabfragen ausführen.

    -- Drop the "deletion vectors" from a Delta table
    > ALTER TABLE my_table DROP FEATURE deletionVectors;
    
    -- 24 hours later
    > ALTER TABLE my_table DROP FEATURE deletionVectors TRUNCATE HISTORY;
    
  • HINZUFÜGEN PARTITION

    Fügt der Tabelle eine oder mehrere Partitionen hinzu.

    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
    
    > ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18);
    
    -- After adding a new partition to the table
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
        age=18
    
    -- Adding multiple partitions to the table
    > ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20);
    
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
        age=18
        age=20
    
  • LÖSCHEN PARTITION

    Entfernt eine oder mehrere Partitionen aus der Tabelle.

    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
        age=18
    
    > ALTER TABLE StudentInfo DROP IF EXISTS PARTITION (age=18);
    
    -- After dropping the partition of the table
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
    
  • PARTITION ... SET ORT

    Legt den Ort einer Partition fest.

    > ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
    
  • UMBENENNEN PARTITION

    Ersetzt die Schlüssel einer Partition.

    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=10
        age=11
        age=12
    
    > ALTER TABLE default.StudentInfo PARTITION (age='10') RENAME TO PARTITION (age='15');
    
    -- After renaming Partition
    > SHOW PARTITIONS StudentInfo;
    partition
    ---------
        age=11
        age=12
        age=15
    
  • WIEDERHERSTELLEN VON PARTITIONEN

    Weist Azure Databricks an, den Speicherort der Tabelle zu scannen und alle Dateien zur Tabelle hinzuzufügen, die direkt zum Dateisystem hinzugefügt wurden.

  • SET ROW FILTER Klausel

    Gilt für:mit Häkchen markiert 'Ja' Databricks SQL mit Häkchen markiert 'Ja' Databricks Runtime 12.2 LTS und höher mit Häkchen markiert 'Ja' nur Unity Catalog

    Fügt der Tabelle eine Zeilenfilterfunktion hinzu. Alle nachfolgenden Abfragen der Tabelle erhalten eine Teilmenge der Zeilen, in denen die Funktion als Boolescher Wert TRUE ausgewertet wird. Dies kann für eine fein abgestufte Zugriffssteuerung nützlich sein, bei der die Funktion die Identität oder Gruppenmitgliedschaften der aufrufenden Benutzer überprüfen kann, um zu entscheiden, ob bestimmte Spalten gefiltert werden sollen.

  • DROP ROW FILTER

    Gilt für:Grünes Häkchen für „Ja“ Nur Unity Catalog

    Löscht den Zeilenfilter aus der Tabelle, sofern vorhanden. Zukünftige Abfragen geben alle Zeilen aus der Tabelle ohne automatische Filterung zurück.

  • SET TBLPROPERTIES

    Legt eine oder mehrere benutzerdefinierte Eigenschaften fest oder setzt diese zurück.

    > ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');
    
  • UNSET TBLPROPERTIES

    Entfernt eine oder mehrere benutzerdefinierte Eigenschaften.

    > ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');
    
  • SET SERDE

    Gilt für:ja angekreuzt Databricks Runtime

    Gibt die Serialisierungs-/Deserializer -Klasse (SerDe) an, die zum Lesen und Schreiben von Daten in einer Strukturformattabelle verwendet wird. Sie können serDe-Eigenschaften auch mit WITH SERDEPROPERTIES.

    > ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe';
    
    > ALTER TABLE dbx.tab1 SET SERDE 'org.apache.hadoop' WITH SERDEPROPERTIES ('k' = 'v', 'kay' = 'vee');
    
  • SET LOCATION

    Verschiebt den Speicherort einer Tabelle.

    SET LOCATION path
    
    • LOCATION path

      path muss ein STRING-Literal sein. Gibt den neuen Speicherort für die Tabelle an.

      Dateien am ursprünglichen Speicherort werden nicht an den neuen Speicherort verschoben.

  • [ SET ] OWNER TO Haupt

    Überträgt den Besitz der Tabelle an principal.

    Gilt für:Grünes Häkchen für „Ja“ Databricks SQL Grünes Häkchen für „Ja“ Databricks Runtime 11.3 LTS und höher

    SET ist als optionales Schlüsselwort zulässig.

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

    Gilt für:Grünes Häkchen für „Ja“ Databricks SQL Grünes Häkchen für „Ja“ Databricks Runtime 13.3 LTS und höher

    Wenden Sie Tags auf die Tabelle an. Sie benötigen die Berechtigung APPLY TAG, um Tags zur Tabelle hinzufügen zu können.

    • tag_name

      Ein STRING-Literal. tag_name muss innerhalb der Tabelle oder Spalte eindeutig sein.

    • tag_value

      Ein STRING-Literal.

    -- Applies three tags to the table named `test`.
    > ALTER TABLE test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
    
    -- Applies three tags to table `main.schema1.test` column `col1`.
    > ALTER TABLE main.schema1.test ALTER COLUMN col1 SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
    
  • UNSET TAGS ( tag_name [, ...] )

    Gilt für:Grünes Häkchen für „Ja“ Databricks SQL Grünes Häkchen für „Ja“ Databricks Runtime 13.3 LTS und höher

    Entfernen Sie Tags aus der Tabelle. Sie benötigen die Berechtigung APPLY TAG, um Tags aus der Tabelle entfernen zu können.

    • tag_name

      Ein STRING-Literal. tag_name muss innerhalb der Tabelle oder Spalte eindeutig sein.

    -- Removes three tags from the table named `test`.
    > ALTER TABLE test UNSET TAGS ('tag1', 'tag2', 'tag3');
    
    -- Removes three tags from table `main.schema1.test` column `col1`.
    > ALTER TABLE main.schema1.test ALTER COLUMN col1 UNSET TAGS ('tag1', 'tag2', 'tag3');
    
  • CLUSTER BY Klausel

    Gilt für:Grünes Häkchen für „Ja“ Databricks SQL Grünes Häkchen für „Ja“ Databricks Runtime 13.3 LTS und höher

    Fügt die Gruppierungstrategie für eine Delta Lake-Tabelle hinzu, ändert sie oder verwirft sie.

  • { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION

    Gilt für:mit Häkchen markiert 'Ja' Databricks SQL mit Häkchen markiert 'Ja' Databricks Runtime 12.2 LTS und höher mit Häkchen markiert 'Ja' nur Unity Catalog

    Ändert die verwaltete Delta Lake-Tabelle in die gewünschte Einstellung für die prädiktive Optimierung.

    Wenn Tabellen erstellt werden, wird standardmäßig aus dem Schema geerbt (INHERIT).

    Wenn die prädiktive Optimierung explizit aktiviert oder als aktiviert vererbt wird, werden OPTIMIZE und VACUUM automatisch für die Tabelle aufgerufen, wenn Azure Databricks dies für angemessen hält. Weitere Details finden Sie unter: Predictive Optimierung für Unity Catalog verwaltete Tabellen.

    -- Enables predictive optimization for my_table
    > ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;
    

Weitere Beispiele

Beispiele zum Hinzufügen von Einschränkungen und zum Ändern von Spalten in Delta Lake finden Sie hier: