転載の場合は出典を明記してください! ORACLE を使用したことがある人なら誰でも、ORACLE で列名とテーブルの順序を変更するのは非常に面倒な作業であることを知っています。ここでは、その簡単な方法を紹介します。 SQL> select object_id from all_objects where owner=SCOTT and object_name=T1 ---------- 6067 SQL> select obj#,col#,name from sys.col$ where obj#=6067; COL# ---------- ---------- 名前 ------------------------- - ---------------------------------- 6067 1 ID 6067 2 NAME SQL> update sys.col$ セット名=NEW_ID ,col#=3 where obj#=6067 and name=ID; SQL> update sys.col$ set name=MY_NAME,col#=1 where obj#=6067 and name=NAME; . SQL> update sys.col$ setcol#=2 where obj#=6067; 1 行が更新されました。 SQL> select * from scott.t1; -- ---- -------------------- 3 cheng 2 yong 1 xin 2 gototop 1 topcio 2 yongxin 1 cyx 7 行が選択されました SQL> 即時シャットダウン データベースが閉じられました。データベースがマウント解除されました。 ORACLE インスタンスが停止しました。 SQL> 起動 ORACLE インスタンスが開始されました。 合計システム グローバル領域 128159368 バイト 可変サイズ 117440512 バイト データベース バッファー 8388608 バイト データベースがマウントされました。 MY_NAME NEW_ID -------------------- ---------- cheng 3 yong 2 xin 1 gototop 2 topcio 1 yongxin 2 cyx 1 7 行が選択されました。これまで、SCOTT.T1 テーブルの列名と順序を指定しましたが、列名を変更せずに順序のみを変更したい場合は、一度に UPDATE を実行するだけで済みます。これは、SYS COL# が原因です。 .COL$ の と NAME はどちらも UNIQUE です。 この方法には一定のリスクがありますが、特に大規模なテーブルでは効果が明らかですが、一般的な方法を使用すると、より多くの記憶域、ロールバック セグメント、および時間のオーバーヘッドが必要になります。