oracle學習筆記-調整字段順序

oracle修改表字段順序三種方式:

1、重建表

--備份目標表數據:

CREATE TABLE TABLE_TEMP_NAME AS SELECT * FROM TABLE_NAME;

--刪除目標表

DROP TABLE TABLE_NAME;

--按照目標順序重建表

CREATE TABLE TABLE_NAME (COLUMN1,COLUMN2,...);

--還原數據

INSERT INTO TABLE_NAME SELECT COLUMN1,COLUMN2(新順序) FROM TABLE_TEMP_NAME;

2、修改sys的數據字典

--查出表所對應的OBJECT_ID

--DBA用戶使用
SELECT OBJECT_ID FROM ALL_OBJECTS WHERE OWNER='OWNER_NAME' AND OBJECT_NAME='TABLE_NAME';
--表歸屬用戶可以使用
SELECT OBJECT_ID FROM OBJ WHERE OBJECT_NAME='TABLE_NAME';

--通過ID查出該表所有字段的順序
SELECT OBJ#,COL#,NAME FROM SYS.COL$ WHERE OBJ#=OBJECT_ID ORDER BY COL#;

--更新SYS.COL$的COL#列的值,需要有DBA權限

UPDATE SYS.COL$ SET COL#=NEW_PLACE_NUM WHERE OBJ#=OBJECT_ID AND NAME='COLUMN_NAME';

--需要調整所有受影響的列的COL#的值

--提交事務

commit;

--需重啓oracle服務,才能生效。

3、通過修改列屬性來實現,此功能12C才支持

--將涉及調整順序的字段列的屬性修改爲INVISIBLE

ALTER TABLE  TABLE_NAME  MODIFY( COLUMN1 INVISIBLE, COLUMN2 INVISIBLE, COLUMN3 INVISIBLE);

--此時通過第2種方式中的方式查詢標誌字段順序,可以看出已經修改爲INVISIBLE的列的COL#列的值爲空了,DESC TABLE_NAME也看不到修改爲INVISIBLE的列了

--按照新的順序將表字段的列更新爲VISIBLE

ALTER TABLE  TABLE_NAME  MODIFY( COLUMN3 VISIBLE, COLUMN2 VISIBLE, COLUMN1 VISIBLE);

--此時再查看錶字段的順序已經調整好了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章