ホームページ >php教程 >php手册 >Oracle FAQ (ORACLE でテーブルの列名と順序を変更する方法)

Oracle FAQ (ORACLE でテーブルの列名と順序を変更する方法)

WBOY
WBOYオリジナル
2016-06-13 12:45:441167ブラウズ


転載する場合は出典を明記してください!
ORACLE を使用したことがある人なら誰でも、ORACLE での列名とテーブルの順序の変更が非常に面倒な作業であることを知っています。そのための簡単な方法を次に示します。

SQL> select object_id from all_objects where owner='SCOTT' and object_name='T1';

OBJECT_ID
----------
6067
SQL> select obj#,col#,name from sys.col$ where obj#=6067;

OBJ# COL#
---------- ---- ------
名前
------------------------------------- -----------------------
6067 1
ID

6067 2
名前

SQL> update sys.col$ set name='NEW_ID' ,col#=3 where obj#=6067 and name='ID';

1 行が更新されました。

SQL> .col$ set name='MY_NAME',col#=1 where obj#=6067 and name='NAME';

1 行が更新されました。

SQL> sys.col$ set を更新しました。 col#=2、obj#=6067 およびcol#=3;

1 行が更新されました。

SQL> commit;

コミットが完了しました。

SQL> select * from scott.t1;

ID NAME
---------- --------------------
3 cheng
2 yong
1 xin
2 gototop
1 topcio
2 yongxin
1 cyx

7 行が選択されました。
SQL>即時シャットダウン
データベースが閉じられました。
データベースがマウント解除されました。
ORACLE インスタンスがシャットダウンされました。
SQL>起動
ORACLE インスタンスが開始されました。

合計システム グローバル領域 128159368 バイト
固定サイズ 732808 バイト
可変サイズ 117440512 バイト
データベース バッファー 8388608 バイト
やり直しバッファー 1597440 バイト
データベースがマウントされました。
データベースがオープンされました。
SQL>select * from scott.t1;

MY_NAME NEW_ID
---------------------- ----------
チェン 3
ヨン 2
xin 1
gototop 2
topcio 1
yongxin 2
cyx 1

7 行が選択されました。

これまでのところ、SCOTT.T1 列があります。テーブル内の名前と順序は指定されていますが、列名は変更せずに順序のみを変更したい場合は、一度に UPDATE を実行するだけで済みます。これは、SYS の COL# と NAME が原因です。 COL$ はどちらも UNIQUE です。

この方法には一定のリスクがありますが、特に大きなテーブルでは効果が明らかですが、一般的な方法を使用すると、より多くのストレージ領域、ロールバックセグメント、および時間のオーバーヘッドが必要になります。​

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。