Articles

Oracle ALTER TABLE ADD Column By Examples

Posted on

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.