Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie die Oracle-Anweisung ALTER TABLE ADD
column verwenden, um eine oder mehrere Spalten zu einer Tabelle hinzuzufügen.
Um eine neue Spalte zu einer Tabelle hinzuzufügen, verwenden Sie die ALTER TABLE
-Anweisung wie folgt:
ALTER TABLE table_name ADD column_name data_type constraint;
In dieser Anweisung:
- Erst geben Sie nach der
ALTER TABLE
-Klausel den Namen der Tabelle an, der Sie die neue Spalte hinzufügen wollen. - Zweitens geben Sie den Spaltennamen, den Datentyp und die Einschränkung an.
Beachten Sie, dass Sie keine Spalte hinzufügen können, die bereits in der Tabelle existiert; der Versuch, dies zu tun, führt zu einem Fehler. Außerdem fügt die ALTER TABLE ADD
Spaltenanweisung die neue Spalte am Ende der Tabelle hinzu. Oracle bietet keine direkte Möglichkeit, die Position der neuen Spalte anzugeben, wie andere Datenbanksysteme, z. B. MySQL.
Wenn Sie mehr als eine Spalte hinzufügen wollen, verwenden Sie folgende Syntax:
ALTER TABLE table_name ADD ( column_name_1 data_type constraint, column_name_2 data_type constraint, ...);
In dieser Syntax trennen Sie zwei Spalten durch ein Komma.
Oracle ALTER TABLE ADD column examples
Zur Demonstration erstellen wir eine Tabelle mit dem Namen members
.
CREATE TABLE members( member_id NUMBER GENERATED BY DEFAULT AS IDENTITY, first_name VARCHAR2(50), last_name VARCHAR2(50), PRIMARY KEY(member_id));
Die folgende Anweisung fügt eine neue Spalte mit dem Namen birth_date
zur Tabelle members
hinzu:
ALTER TABLE members ADD birth_date DATE NOT NULL;
In diesem Beispiel ist die birth_date
-Spalte eine DATE
-Spalte und sie akzeptiert keine Null.
Angenommen, Sie möchten den Zeitpunkt der Erstellung und Aktualisierung einer Zeile erfassen. Dazu müssen Sie zwei Spalten created_at
und updated_at
wie folgt hinzufügen:
ALTER TABLE members ADD( created_at TIMESTAMP WITH TIME ZONE NOT NULL, updated_at TIMESTAMP WITH TIME ZONE NOT NULL );
Die Datentypen der Spalten created_at
und updated_at
sind TIMESTAMP WITH TIME ZONE
. Diese Spalten akzeptieren auch nicht null.
Um zu prüfen, ob eine Spalte in einer Tabelle existiert, fragen Sie die Daten aus der Ansicht user_tab_cols
ab. Die folgende Anweisung prüft beispielsweise, ob in der Tabelle members
die Spalte first_name
vorhanden ist.
SELECT COUNT(*)FROM user_tab_colsWHERE column_name = 'FIRST_NAME' AND table_name = 'MEMBERS';
Diese Abfrage ist praktisch, wenn Sie prüfen möchten, ob eine Spalte in einer Tabelle vorhanden ist, bevor Sie sie hinzufügen.
Der folgende PL/SQL-Block prüft zum Beispiel, ob die Tabelle members
eine effective_date
Spalte hat, bevor sie hinzugefügt wird.
SET SERVEROUTPUT ON SIZE 1000000DECLARE v_col_exists NUMBER BEGIN SELECT count(*) INTO v_col_exists FROM user_tab_cols WHERE column_name = 'EFFECTIVE_DATE' AND table_name = 'MEMBERS'; IF (v_col_exists = 0) THEN EXECUTE IMMEDIATE 'ALTER TABLE members ADD effective_date DATE'; ELSE DBMS_OUTPUT.PUT_LINE('The column effective_date already exists'); END IF;END;/
Wenn Sie den Block beim ersten Mal ausführen, wird die effective_date
Spalte am Ende der members
Tabelle angehängt. Wenn Sie es jedoch zum zweiten Mal ausführen, sehen Sie folgende Meldung:
The column effective_date already exists
Das ist, was wir erwartet haben.
In diesem Tutorial haben Sie gelernt, wie Sie die Oracle ALTER TABLE ADD
-Spaltenanweisung verwenden, um eine oder mehrere Spalten zu einer bestehenden Tabelle hinzuzufügen.
- War dieses Tutorial hilfreich?
- JaNein