要件の変更とアップグレードに応じて、Oracleでテーブルを変更する必要があることがよくあります。ここに、Altertableステートメントに関するいくつかの重要なポイントがあります
- ALTER TABLE を使用して、テーブルを変更または変更します ステートメント。
- テーブルを変更するには、テーブルがスキーマに含まれている必要があります。または、テーブルに対するALTERオブジェクト権限またはALTERANYTABLEシステム権限のいずれかが必要です。
- ビュー、マテリアライズドビュー、トリガー、関数ベースのインデックス、チェック制約、関数、パッケージの手順がベーステーブルに依存している場合、ベーステーブルまたはその列の変更は、依存オブジェクトに影響を与える可能性があります。たとえば、plsqlオブジェクトは次のようになります。依存テーブルオブジェクトが変更され、それらを再度有効にする必要がある場合は無効です
物理的特性(INITRANSまたはストレージパラメータ)を変更する
Alter tableステートメントを使用して、テーブルのストレージパラメータを変更できます。このようにinittransを変更できます
ALTER TABLE TABLE_NAME INITRANS 10;
テーブルを新しいセグメントまたはテーブルスペースに移動する
必要に応じて、非パーティションテーブルまたはテーブルのパーティションを新しいセグメントまたは新しいテーブルスペースに移動できます
Alter table table_name move tablespace <tablespace name>
moveコマンドを使用して、altertableコマンドを使用して変更されていないテーブルのストレージパラメータを変更することもできます
Oracleのテーブルを変更してデータ型を変更する
altertablemodifyコマンドを使用して任意の列のデータ型を変更できます
ALTER TABLE <table_name> MODIFY (<column_name> <new_data_type>);
Before SQL> desc emp Name Null? Type ----------------------------------------- -------- ----------------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) After SQL> desc emp Name Null? Type ----------------------------------------- -------- ---------------------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(20) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)
Oracleの列データ型を変更する
新しい列の追加/列の削除/列の名前の変更
テーブル定義に新しい列を追加できます
altertableaddコマンドを使用する
ALTER TABLE <table_name>
ADD (<New column_name> <new_data_type>);
Oracleでは、テーブル内の既存の列の名前を変更できます。列の名前を変更するには、ALTERTABLEステートメントのRENAMECOLUMN句を使用します
Oracleでは、コマンドを使用してテーブルに列をドロップできます
テーブルの変更
これらの詳細については、以下の記事を確認してください
alter table add column oracle
未使用の列を設定し、未使用の列を削除する
列を削除する際に消費されるリソースが心配な場合は、ALTERTABLE…SETUNUSEDステートメントを使用できます。
このステートメントは、1つ以上の列を未使用としてマークしますが、実際にはターゲット列データを削除したり、これらの列が占めるディスク領域を復元したりすることはありません。
- 未使用としてマークされた列はクエリまたはデータディクショナリビューに表示されず、新しい列がその名前を再利用できるようにその名前が削除されます。列に定義されているすべての制約、インデックス、および統計も削除されます。
Example
ALTER TABLE <table_name>
SET UNUSED COLUMN <column_name>;
後でコマンドを使用してリソースが少なくなったときに、未使用の列を削除できます
ALTER TABLE <table_name>
Drop UNUSED COLUMN ;
テーブルに関連付けられた整合性制約を追加、変更、または削除するか、制約を有効/無効にすることもできます
制約の追加は、テーブルの追加の制約を使用して行われます
ALTER TABLE EMP ADD CONSTRAINT EMP_FK FOREIGN KEY (DEPT_NO) REFERENCES DEPT(DEPT_NO);
制約の削除–
を使用して実行されますALTER TABLE DROP CONSTRAINT <constraint_name> command;
制約の有効化/無効化–制約は、DISABLE / ENABLEモードで作成するか、コマンドを使用して無効化または有効化できます
ALTER TABLE ENABLE/DISABLE CONSTRAINT <constraint_name>
テーブル名の名前を変更
Oracleでは、テーブル名の名前も変更できます
Rename <table name> to <new table name>;
テーブルキャッシュ/キャッシュなしの変更、圧縮、並列処理
Oracleは許可します テーブルキャッシュ/キャッシュなしの変更、圧縮、並列処理
関連記事
Oracleのすべてのテーブルを一覧表示する
テーブルを作成するoracle
ora-20005:オブジェクトの統計がロックされている
テーブルの移動を変更する
oracleのテーブルのすべての制約を確認する方法
https ://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_3001.htm