ホームページ  >  記事  >  データベース  >  Oracleテーブルに列を追加する方法

Oracleテーブルに列を追加する方法

青灯夜游
青灯夜游オリジナル
2021-12-24 15:35:1236214ブラウズ

Oracle では、「ALTER TABLE ADD」ステートメントを使用して 1 つ以上の列をテーブルに追加できます。構文は「ALTER TABLE table_name ADD column_name data_typeconstraint;」です。

Oracleテーブルに列を追加する方法

このチュートリアルの動作環境: 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 つの列をカンマで区切ります。

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 テーブルに追加します。の場合、

birth_date

列は DATE 列であり、null を受け入れません。 行の作成時刻と更新時刻を記録するとします。次に、次のように、さらに 2 つの列

created_at

updated_at を追加できます。 <pre class="brush:sql;toolbar:false;">ALTER TABLE members ADD birth_date DATE NOT NULL;</pre>

created_at

列と updated_at 列データ型は TIMESTAMP WITH TIME ZONE です。これらの列は null も受け入れません。 テーブルに列が存在するかどうかを確認するには、

user_tab_cols

ビューからデータをクエリします。たとえば、次のステートメントは、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 = &amp;#39;FIRST_NAME&amp;#39; AND table_name = &amp;#39;MEMBERS&amp;#39;;</pre> このブロックが初めて実行されると、

Effective_date

列が 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 = &amp;#39;EFFECTIVE_DATE&amp;#39; AND table_name = &amp;#39;MEMBERS&amp;#39;; IF (v_col_exists = 0) THEN EXECUTE IMMEDIATE &amp;#39;ALTER TABLE members ADD effective_date DATE&amp;#39;; ELSE DBMS_OUTPUT.PUT_LINE(&amp;#39;The column effective_date already exists&amp;#39;); END IF; END; /</pre> これは、上記のプログラムから予想されるとおりです。


推奨チュートリアル: 「

Oracle チュートリアル

以上がOracleテーブルに列を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。