sql >> データベース >  >> RDS >> Oracle

テーブル追加列オラクルを変更する方法

    Oracleデータベースのテーブル追加列を変更する方法

    • ALTER TABLE ADD COLUMNを使用して新しい列を追加します Oracleのステートメント
    • テーブルを変更するには、テーブルがスキーマに含まれている必要があります。または、テーブルに対するALTERオブジェクト権限またはALTERANYTABLEシステム権限のいずれかが必要です。
    • ビュー、マテリアライズドビュー、トリガー、関数ベースのインデックス、チェック制約、関数、パッケージのプロシージャがベーステーブルに依存している場合、ベーステーブルまたはその列の変更が依存オブジェクトに影響を与える可能性があります。たとえば、PLSQLオブジェクトは次のようになります。依存テーブルオブジェクトが変更され、それらを再度有効にする必要がある場合は無効です

    altertableaddコマンドを使用してテーブル定義に新しい列を追加できます

    ALTER TABLE tech_master ADD (name  varchar2(9));
    Table Altered
    • 11gより前では、新しい列がテーブルに追加された場合、DEFAULT句を指定しない限り、列は最初はNULLになります。 。デフォルト値を指定すると、データベースは各行をデフォルト値ですぐに更新します。これには時間がかかる場合があり、更新中はテーブルに排他的なDMLロックがあることに注意してください。
    • 一部のタイプのテーブル(たとえば、LOB列のないテーブル)では、NOT NULL制約とデフォルト値の両方を指定すると、データベースは列の追加操作を最適化し、テーブルの時間を大幅に短縮できます。 DML用にロックされています。デフォルト値を使用したnull以外の列の追加の場合も同様です
    • Oracleは11gで列の高速追加機能を導入しました。したがって、デフォルト値のnull以外の列またはデフォルト値のnull列を追加すると、Oracleはすぐに列を追加し、各行をデフォルト値で更新しません。 S
    • o REDOおよびUNDOの生成に対してペナルティが発生します。ユーザーが既存のレコードの列を選択すると、Oracleはデータディクショナリからデフォルト値に関するファクトを取得し、それをユーザーに返します。

    列を表示する場所を指定することはできません。新しく追加された列が最後の列になります

    同様に、テーブルに複数の列を追加できます

    ALTER TABLE table_name
    ADD (col1 column datatype [default  expr],
    col2 column datatype [default  expr],
    ...
    coln column datatype [default  expr]);
    
    Example
    ALTER TABLE customer_master
    ADD (location_name varchar2(100),
    last_login date);

    列の命名規則は、テーブルの作成ステートメントの場合と同じです

    • 列に選択する名前は、次の標準ルールに従う必要があります。
    • 名前は文字A-Zまたはa-zで始まる必要があります
    • 数字とアンダースコアを含めることができます
    • 大文字または小文字である可能性があります
    • 最大30文字の長さにすることができます
    • スキーマ内の別の既存のオブジェクトと同じ名前を使用することはできません
    • OracleサーバーおよびSQLの予約語であってはなりません

    データ型もcreatetableステートメントと同じです

    キャラクター -CHAR、NCHAR、VARCHAR2、およびNVARCHAR2。
    – CHARデータ型は、最大長がバイト単位の固定長の英数字ストリングです。
    -CHARデータ型を作成するとき、データベースは受信データ用のスペースを保持し、データが最大サイズより短い場合は、右側にスペースが埋め込まれます
    -VARCHAR2データ型は変数です-長さの英数字の文字列。最大長はバイト単位です。最大4000バイトを保存できます。
    番号 -NUMBER
    -NUMBERデータ型は、数値を精度とスケールで格納します。
    -数値データ型は、負および正の整数の固定小数点数と浮動小数点数を格納します
    –列がNUMBER(6、2)として定義されている場合、値の範囲は–9999.99から9999.99。 Oracleは浮動小数点数を丸めます。
    日付と時刻 –日付、タイムスタンプ(タイムゾーンまたはローカルタイムゾーンを使用)、年から月までの間隔、および日から秒までの間隔。
    -DATEデータ型は、日付と時刻の情報を格納するために使用されます。
    -このデータ型には、データを操作、フォーマット、および表示するための特定の機能がいくつかあります。
    – DATEデータ型は7バイトのストレージを保持し、世紀、年、月、日、時、分、秒に関する情報を持っています。
    – NLS_DATE_FORMATパラメータを変更して、データの表示を制御できます。 SYSDATE関数は現在の日付を返します
    大きなオブジェクト -BLOB (バイナリラージオブジェクト) 、CLOB (文字ラージオブジェクト) 、NCLOB&BFILE
    -これらのデータ型の列には、テキスト、画像、ビデオ、空間データなどの非構造化データを格納できます。 -CLOBデータ型は、CHARデータベースの文字セットを使用して最大8テラバイトの文字データを格納できます。
    -BLOBデータ型は、データが単に「ビット」値のストリームである画像やビデオデータに関連付けられているオブジェクトなどの非構造化バイナリラージオブジェクトを格納するために使用されます。
    -BFILEデータ型の値は、サーバーのファイルシステム上のファイルへのファイルロケーターまたはポインターとして機能します。サポートされる最大ファイルサイズは8TBから128TBです。
    長い 最大2Gの可変長文字データ
    rowid テーブル内の行の一意のアドレスを表す64基数システム

    列を追加する前に

    Desc emp
    

    テーブル追加列を変更

    alter table emp add(ext varchar2(10));
    

    列を追加した後

    Desc emp
    

    その列を削除します

    alter table emp drop column ext;
    

    Oracleでテーブル追加列を変更する方法に関する記事が気に入っていただければ幸いです

    関連記事
    oraclecreatetable構文
    AlterTablein Oracle
    alter table move
    DROPTABLEORACLEステートメント
    checkoracletable size
    ora-20005:オブジェクト統計はロックされています


    1. パフォーマンスの違い:INNERJOINとWHERE句に配置された条件

    2. UNION複数のストアドプロシージャの結果

    3. HibernateでのOracleXMLType列の使用

    4. UTC_DATEの例– MySQL