概要:このチュートリアルでは、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
列ステートメントを使用してテーブル内の既存の列の定義を変更する方法を学習しました。
- このチュートリアルは役に立ちましたか?
- はいいいえ