概要:このチュートリアルでは、Oracle ALTER TABLE MODIFYの使用方法を学習します。既存の列の定義を変更するためのcolumnステートメント。
テーブル内の列の定義を変更するには、次のようにALTER TABLE MODIFY列構文を使用します。
ステートメントは単純です。テーブルの列を変更するには、実行する列名、テーブル名、およびアクションを指定する必要があります。
Oracleでは多くのアクションを実行できますが、主なアクションは次のとおりです。
- 列の表示を変更する
- null値を許可するかどうか
- 列のサイズを短くするか大きくする
- を変更する列のデフォルト値
- 仮想列の式を変更する
複数の列を変更するには、次の構文を使用します。
Oracle ALTER TABLEMODIFY列の例
まず、デモ用にaccountsという名前の新しいテーブルを作成します。
次に、いくつかの行をaccountsテーブルに挿入します。
3番目に、次のSELECTステートメント:
A)列の表示を変更しますity
Oracle Database 12cでは、テーブルの列を非表示または表示として定義できます。非表示の列は、次のようなクエリでは使用できません:
または次のようなステートメント:
SQL * Plusで。
ただし、クエリで明示的に指定することにより、非表示の列をクエリできます。
Byデフォルトでは、テーブルの列が表示されます。テーブルを作成するとき、またはALTER TABLE MODIFY列ステートメントを使用するときに非表示の列を定義できます。
たとえば、次のステートメントはfull_name列が非表示:
次のステートメントは、full_name列を除くaccountsテーブルのすべての列からデータを返します。 :
これは、full_name列が表示されないためです。
変更するには列を非表示から表示に変更するには、次のステートメントを使用します。
B)nullの例を許可するかどうか
次のステートメントの変更null以外の値を受け入れるemail列:
ただし、Oracleは次のエラーを発行しました:
列をnull可能からnに変更したときon-nullableの場合、既存のデータが新しい制約を満たしていることを確認する必要があります。
これを修正するには、最初にemail列の値を更新します。
LOWER()関数は文字列を小文字に変換することに注意してください。
次に、列の制約:
これで、期待どおりに機能します。
C)列の例のサイズを拡大または縮小します
電話番号に国際コードを追加するとします。その前に、次のステートメントを使用して電話列のサイズを広げる必要があります。
これで、電話番号を更新できます:
次のステートメントは、更新を確認します:
列のサイズを短くするには、列のすべてのデータが新しいサイズに収まるようにします。
たとえば、phone列のサイズを12文字に短縮しようとしています。
OracleDatabaseは次のエラーを発行しました。
これを修正するには、まず、電話番号から国際コードを削除する必要があります。
REPLACE()関数は、サブストリングを新しいサブストリングに置き換えます。この場合、「+ 1-」は空の文字列に置き換えられます。
次に、phone列のサイズを短くします:
D)変更仮想列
次の形式のフルネームを想定します:
これを行うには、の式を変更します。仮想列full_nameは次のとおりです。
次のステートメントは、変更を確認します。
E)列のデフォルト値を変更する
statusという名前の新しい列をデフォルト値でaccountsテーブルに追加しましょう1.
ステートメントを実行すると、accountsテーブルの既存のすべての行のステータス列の値が1に設定されます。
デフォルト値を変更するにはoステータス列が0の場合、次のステートメントを使用します。
accountsに新しい行を追加できます。 status列のデフォルト値が0か1かを確認するdiv>テーブル
クエリデータaccountsテーブルから:
ご覧のとおり、ID4のアカウントのステータス列の値は予想どおり0です。
このチュートリアルでは、Oracle ALTER TABLE MODIFY列ステートメントを使用してテーブル内の既存の列の定義を変更する方法を学習しました。
- このチュートリアルは役に立ちましたか?
- はいいいえ