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;“.
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, ... );
在这个语法中,用逗号分隔两列。
下面来创建一个名为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_at
和updated_at
,如下所示:
ALTER TABLE members ADD( created_at TIMESTAMP WITH TIME ZONE NOT NULL, updated_at TIMESTAMP WITH TIME ZONE NOT NULL );
created_at
和updated_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
ALTER TABLE
wie folgt: The column effective_date already exists
ALTER TABLE
-Klausel hinzugefügt werden soll. 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!