ホームページ >データベース >Oracle >Oracleでテーブル構造を変更する方法

Oracleでテーブル構造を変更する方法

青灯夜游
青灯夜游オリジナル
2022-01-13 11:15:4510411ブラウズ

Oracle では、「ALTER TABLE」ステートメントを使用してテーブル構造を変更できます。このステートメントは、列の追加または削除、元の列タイプの変更、列またはテーブルの名前変更などによって、元のテーブルを変更できます。構造、構文「ALTER TABLE テーブル名 [オプションの変更]」。 ALTER TABLE テーブル名 [オプションの変更]

Oracleでテーブル構造を変更する方法

このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle では、「ALTER TABLE」ステートメントを使用してテーブル構造を変更できます。

ALTER TABLE ステートメントは、列の追加または削除、元の列タイプの変更、列またはテーブルの名前変更など、元のテーブルの構造を変更できます。

ALTER TABLE ステートメントの構文:

ALTER TABLE 表名 [修改选项]

上記のステートメントでは、

  • まず、変更するテーブルの名前を指定します。

  • 2 番目に、テーブル名の後に実行する変更操作を指定します。

ALTER TABLE ステートメントを使用できます:

  • 1 つ以上の列を追加します
  • 列定義を変更します
  • 1 つ以上の列を削除する
  • 列の名前を変更
  • テーブルの名前を変更

各操作がどのように機能するかを理解するために、いくつかの例を見てみましょう。

Oracle ALTER TABLE の例

前のチュートリアルで作成した persons テーブルをデモンストレーションのために使用します。

-- 12c语法
CREATE TABLE persons(
    person_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
    first_name VARCHAR2(50) NOT NULL,
    last_name VARCHAR2(50) NOT NULL,
    PRIMARY KEY(person_id)
);

1. 列の追加の例

テーブルに新しい列を追加するには、次の構文を使用します:

ALTER TABLE table_name
ADD column_name type constraint;

たとえば、次のステートメント birthdate という名前の新しい列を persons テーブルに追加します。

ALTER TABLE persons 
ADD birthdate DATE NOT NULL;

persons テーブルを見ると、次のようになります。 誕生日 日付列が列リストの最後に追加されます:

DESC persons; 

Name       Null     Type         
---------- -------- ------------ 
PERSON_ID  NOT NULL NUMBER       
FIRST_NAME NOT NULL VARCHAR2(50) 
LAST_NAME  NOT NULL VARCHAR2(50) 
BIRTHDATE  NOT NULL DATE

複数の列をテーブルに同時に追加するには、次のように新しい列を括弧で囲みます:

ALTER TABLE table_name
ADD (
    column_name type constraint,
    column_name type constraint,
    ...
);

次の例を見てください:

ALTER TABLE persons 
ADD (
    phone VARCHAR(20),
    email VARCHAR(100)
);

この例では、ステートメントは phoneemail という 2 つの名前を users# に追加します。 ## テーブル。新しい列。

DESC persons

Name       Null     Type          
---------- -------- ------------- 
PERSON_ID  NOT NULL NUMBER        
FIRST_NAME NOT NULL VARCHAR2(50)  
LAST_NAME  NOT NULL VARCHAR2(50)  
BIRTHDATE  NOT NULL DATE          
PHONE               VARCHAR2(20)  
EMAIL               VARCHAR2(100)

2. 列のプロパティの変更例

列のプロパティを変更するには、次の構文を使用します:

ALTER TABLE table_name
  MODIFY column_name type constraint;

たとえば、次のステートメントは

birthdate 列を空の列に変更します:

ALTER TABLE persons MODIFY birthdate DATE NULL;

persons テーブル構造を再度確認します:

DESC persons

Name       Null     Type          
---------- -------- ------------- 
PERSON_ID  NOT NULL NUMBER        
FIRST_NAME NOT NULL VARCHAR2(50)  
LAST_NAME  NOT NULL VARCHAR2(50)  
BIRTHDATE           DATE          
PHONE               VARCHAR2(20)  
EMAIL               VARCHAR2(100)

示されているとおり ご覧のとおり、

birthdate の日付は無力になります。

複数の列を変更するには、次の構文を使用します。

 ALTER TABLE table_name
  MODIFY ( column_1 type constraint,
          column_1 type constraint,
         ...);

たとえば、次のステートメントは、

phone 列と email 列を ## に変更します。 # NOT NULL 列を指定し、email 列の長さを 255 文字に拡張します: <pre class="brush:sql;toolbar:false;">ALTER TABLE persons MODIFY( phone VARCHAR2(20) NOT NULL, email VARCHAR2(255) NOT NULL );</pre>

persons

テーブル構造を確認します。再度: <pre class="brush:sql;toolbar:false;">DESC persons; Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) BIRTHDATE DATE PHONE NOT NULL VARCHAR2(20) EMAIL NOT NULL VARCHAR2(255)</pre>

3. 既存の列を削除する例

テーブルから既存の列を削除するには、次の構文を使用します:

ALTER TABLE table_name
DROP COLUMN column_name;

このステートメントは、テーブル構造から列を削除し、その列に格納されているデータを削除します。次の例では、

persons

テーブルから birthdate 日付型列を削除します。 <pre class="brush:sql;toolbar:false;">ALTER TABLE persons DROP COLUMN birthdate;</pre>

persons

テーブル構造をもう一度見てみると、次のことがわかります。 誕生日 列が削除されました: <pre class="brush:sql;toolbar:false;">DESC persons; Name Null Type ---------- -------- ------------- PERSON_ID NOT NULL NUMBER FIRST_NAME NOT NULL VARCHAR2(50) LAST_NAME NOT NULL VARCHAR2(50) PHONE NOT NULL VARCHAR2(20) EMAIL NOT NULL VARCHAR2(255)</pre> 複数の列を同時に削除するには、次の構文を使用します:

ALTER TABLE table_name 
DROP (column_1,column_2,...);

たとえば、次のステートメントは

を削除します。個人テーブル # および

email 列の電話##:

ALTER TABLE persons
DROP
  ( email, phone );
persons

テーブルを見てみましょう:

DESC persons;

Name       Null     Type         
---------- -------- ------------ 
PERSON_ID  NOT NULL NUMBER       
FIRST_NAME NOT NULL VARCHAR2(50) 
LAST_NAME  NOT NULL VARCHAR2(50)
email

および

phone 列は予想どおり削除されました。 4. 列の名前変更の例

バージョン 9i 以降、Oracle では次のように列の名前を変更するための句が追加されました:

ALTER TABLE table_name
RENAME COLUMN column_name TO new_name;

たとえば、次のステートメントは

first_name

列から

forename 列へ:

ALTER TABLE persons 
RENAME COLUMN first_name TO forename;
次のステートメントは結果を確認します:
DESC persons;

Name      Null     Type         
--------- -------- ------------ 
PERSON_ID NOT NULL NUMBER       
FORENAME  NOT NULL VARCHAR2(50) 
LAST_NAME NOT NULL VARCHAR2(50)

5. テーブルの名前を変更します。 例

テーブルの名前を新しい name

テーブル名に変更するには、次の構文を使用します。

ALTER TABLE table_name
RENAME TO new_table_name;
たとえば、次のステートメントは users## になります。 # テーブルの名前が

people

に変更されました テーブル: <pre class="brush:sql;toolbar:false;">ALTER TABLE persons RENAME TO people;</pre> 推奨チュートリアル: "Oracle Tutorial"

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

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