Heim >Datenbank >Oracle >So fügen Sie Spalten zur Oracle-Tabelle hinzu

So fügen Sie Spalten zur Oracle-Tabelle hinzu

青灯夜游
青灯夜游Original
2021-12-24 15:35:1236435Durchsuche

In Oracle können Sie die Anweisung „ALTER TABLE ADD“ verwenden, um eine oder mehrere Spalten zur Tabelle hinzuzufügen. Die Syntax lautet „ALTER TABLE Tabellenname ADD Spaltenname Datentyp-Einschränkung;“.

So fügen Sie Spalten zur Oracle-Tabelle hinzu

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Oracle 11g-Version, Dell G3-Computer.

In Oracle können Sie die Anweisung „ALTER TABLE ADD“ verwenden, um eine oder mehrere Spalten zur Tabelle hinzuzufügen. ALTER TABLE ADD”语句来向表中添加一列或多列。

要将新列添加到表中,请按如下所示使用ALTER TABLE语句:

ALTER TABLE table_name 
ADD column_name data_type constraint;

在上面这个语句中,

  • 首先,在ALTER TABLE子句之后指定要添加新列的表的名称。
  • 其次,指定列名,数据类型及其约束。

请注意,不能添加表中已经存在的列; 这样做会导致错误。 另外,ALTER TABLE ADD列语句在表的末尾添加新列。 Oracle没有提供直接的方法来允许您像其他数据库系统(如MySQL)那样指定新列的位置。

如果想要添加多个列,请使用以下语法:

ALTER TABLE table_name 
ADD (
    column_name_1 data_type constraint,
    column_name_2 data_type constraint,
    ...
);

在这个语法中,用逗号分隔两列。

Oracle ALTER TABLE ADD列的例子

下面来创建一个名为members的表。参考以下SQL语句 -

-- 12c语法
CREATE TABLE members(
    member_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50),
    PRIMARY KEY(member_id)
);

以下语句将一个名为birth_date的新列添加到members表中:

ALTER TABLE members 
ADD birth_date DATE NOT NULL;

在这个例子中,birth_date列是一个DATE列,它不接受null

假设想记录一行的创建和更新的时间。那么可以再添加两列created_atupdated_at,如下所示:

ALTER TABLE
    members ADD(
        created_at TIMESTAMP WITH TIME ZONE NOT NULL,
        updated_at TIMESTAMP WITH TIME ZONE NOT NULL
    );

created_atupdated_at列的数据类型是TIMESTAMP WITH TIME ZONE。 这些列也不接受null

要检查表中是否存在列,可以从user_tab_cols视图查询数据。 例如,以下语句将检查members表是否具有first_name列。

SELECT
    COUNT(*)
FROM
    user_tab_cols
WHERE
    column_name = 'FIRST_NAME'
    AND table_name = 'MEMBERS';

当想在添加表之前检查列中是否存在列时,此查询就派上用场了。
例如,下面的PL/SQL块在添加之前检查members表是否有effective_date列。

SET SERVEROUTPUT ON SIZE 1000000
DECLARE
  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;
/

如果第一次执行该块,那么effective_date列将被添加到members

Um der Tabelle eine neue Spalte hinzuzufügen, verwenden Sie die Anweisung ALTER TABLE wie folgt:

The column effective_date already exists

In der obigen Anweisung

  • Geben Sie zunächst den Namen an der Tabelle, zu der die neue Spalte nach der ALTER TABLE-Klausel hinzugefügt werden soll.
  • Zweitens geben Sie den Spaltennamen, den Datentyp und seine Einschränkungen an.

Bitte beachten Sie, dass Sie keine Spalten hinzufügen können, die bereits in der Tabelle vorhanden sind. Dies führt zu einem Fehler. Darüber hinaus fügt die Spaltenanweisung ALTER TABLE ADD eine neue Spalte am Ende der Tabelle hinzu. Oracle bietet keine direkte Möglichkeit, den Speicherort neuer Spalten wie andere Datenbanksysteme (z. B. MySQL) anzugeben.

🎜Wenn Sie mehrere Spalten hinzufügen möchten, verwenden Sie die folgende Syntax: 🎜rrreee🎜Trennen Sie in dieser Syntax die beiden Spalten durch ein Komma. 🎜

🎜Oracle ALTER TABLE ADD-Spaltenbeispiel

🎜Lassen Sie uns eine Spalte mit dem Namen members surface erstellen. Sehen Sie sich die folgende SQL-Anweisung an: 🎜rrreee🎜Die folgende Anweisung fügt eine neue Spalte mit dem Namen birth_date zur Tabelle members hinzu: 🎜rrreee🎜In diesem Beispiel ist birth_date The Die -Spalte ist eine DATE-Spalte, die keine null akzeptiert. 🎜🎜Angenommen, Sie möchten die Erstellungs- und Aktualisierungszeit einer Zeile aufzeichnen. Dann können Sie zwei weitere Spalten created_at und updated_at hinzufügen, wie unten gezeigt: 🎜rrreee🎜created_at und updated_at Spalten Der Datentyp ist TIMESTAMP WITH TIME ZONE. Diese Spalten akzeptieren auch keine null. 🎜🎜Um zu überprüfen, ob eine Spalte in der Tabelle vorhanden ist, können Sie die Daten aus der Ansicht user_tab_cols abfragen. Die folgende Anweisung überprüft beispielsweise, ob die Tabelle members eine Spalte first_name enthält. 🎜rrreee🎜Diese Abfrage ist praktisch, wenn Sie prüfen möchten, ob eine Spalte in einer Spalte vorhanden ist, bevor Sie sie der Tabelle hinzufügen. 🎜Zum Beispiel prüft der folgende PL/SQL-Block, ob die Tabelle members eine Spalte efficient_date hat, bevor er diese hinzufügt. 🎜rrreee🎜Wenn dieser Block zum ersten Mal ausgeführt wird, wird die Spalte economic_date am Ende der Tabelle members hinzugefügt. Sobald Sie es jedoch zum zweiten Mal ausführen, wird die folgende Meldung angezeigt: 🎜rrreee🎜 Dies entspricht den Erwartungen des oben beschriebenen Programms. 🎜🎜🎜Empfohlenes Tutorial: „🎜Oracle Tutorial🎜“🎜

Das obige ist der detaillierte Inhalt vonSo fügen Sie Spalten zur Oracle-Tabelle hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn