Oracle では、「ALTER TABLE ADD」ステートメントを使用して 1 つ以上の列をテーブルに追加できます。構文は「ALTER TABLE table_name ADD column_name data_typeconstraint;」です。
このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。
Oracle では、「ALTER TABLE ADD
」ステートメントを使用して、1 つ以上の列をテーブルに追加できます。
テーブルに新しい列を追加するには、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, ... );
この構文では、2 つの列をカンマで区切ります。
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
テーブルに追加します。の場合、
列は DATE
列であり、null
を受け入れません。 行の作成時刻と更新時刻を記録するとします。次に、次のように、さらに 2 つの列
と updated_at
を追加できます。 <pre class="brush:sql;toolbar:false;">ALTER TABLE members
ADD birth_date DATE NOT NULL;</pre>
列と updated_at
列データ型は TIMESTAMP WITH TIME ZONE
です。これらの列は null
も受け入れません。 テーブルに列が存在するかどうかを確認するには、
ビューからデータをクエリします。たとえば、次のステートメントは、members
テーブルに first_name
列があるかどうかを確認します。 <pre class="brush:sql;toolbar:false;">ALTER TABLE
members ADD(
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL
);</pre>
このクエリは、テーブルに列を追加する前に列が存在するかどうかを確認する場合に便利です。
PL/SQL
ブロックは、members テーブルに Effective_date
列があるかどうかを追加する前にチェックします。 <pre class="brush:sql;toolbar:false;">SELECT
COUNT(*)
FROM
user_tab_cols
WHERE
column_name = &#39;FIRST_NAME&#39;
AND table_name = &#39;MEMBERS&#39;;</pre>
このブロックが初めて実行されると、
列が members
テーブルの最後に追加されます。ただし、2 回目以降に実行すると、次のメッセージが表示されます。 <pre class="brush:sql;toolbar:false;">SET SERVEROUTPUT ON SIZE 1000000
DECLARE
v_col_exists NUMBER
BEGIN
SELECT count(*) INTO v_col_exists
FROM user_tab_cols
WHERE column_name = &#39;EFFECTIVE_DATE&#39;
AND table_name = &#39;MEMBERS&#39;;
IF (v_col_exists = 0) THEN
EXECUTE IMMEDIATE &#39;ALTER TABLE members ADD effective_date DATE&#39;;
ELSE
DBMS_OUTPUT.PUT_LINE(&#39;The column effective_date already exists&#39;);
END IF;
END;
/</pre>
これは、上記のプログラムから予想されるとおりです。
推奨チュートリアル: 「
以上がOracleテーブルに列を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。