我創建了一個包含4列的表。我需要改變表格的結構。我需要永久性地改變第4列和第2列的位置。這在Oracle中可能嗎?創建表後創建表的列順序
-4
A
回答
5
+0
我在採訪中被問到這個問題。根據面試官的說法,這是可能的。 – user2170216 2013-03-14 14:46:18
3
您可以運行類似下面的腳本:
CREATE TABLE TMP_TBL as SELECT * FROM TBL_ORIG;
ALTER TABLE TBL_ORIG ADD COLUMN COL3;
DROP TABLE TBL_ORIG;
CREATE TABLE TBL_ORIG AS SELECT COL1, COL3, COL2 FROM TMP_TBL;
DROP TABLE TMP_TBL
你需要考慮的索引以及存儲的擔憂。
2
爲什麼在這個世界上這是必要的?列順序在SQL中沒有任何意義。
2
列COL1的交換和COL2
假定COL1是int
和COL2是varchar2(20)
-- drop all indexes and constraints concerning col1 and col2
alter table your_table add temp_col int; -- type of col1
update your_table set col1 = null, temp_col = col1;
alter table your_table modify col1 varchar2(20); -- type of col2
update your_table set col2 = null, col1 = col2;
alter table your_table modify col2 int; -- type of col1
update your_table set col2 = temp_col;
alter table your_table drop column temp_col;
alter table your_table rename column col1 to temp_col;
alter table your_table rename column col2 to col1;
alter table your_table rename column temp_col to col1;
-- recreate indexes and constraints
2
只需重命名錶中的列,如果它們是相同的數據類型。如果不是,那麼Alter - 參見Sean和Egor的例子。
重命名: http://docs.oracle.com/cd/E11882_01/server.112/e25494/tables006.htm#ADMIN11662
而在採訪中,他們正在尋找肖恩的答案。只是FYI ...
相關問題
- 1. 列索引順序SQLite的創建表
- 2. 對列表按順序創建元組
- 3. 創建字典從列表 - 按順序
- 4. 在創建時創建排序列表
- 5. 從列表中創建順序子列表
- 6. 創建和填充表的順序
- 7. 創建列表
- 8. 創建列表
- 9. 創建列表
- 10. 創建列表
- 11. 創建表後創建一個列到Vaadin表對象
- 12. 創建HTML無序列表
- 13. 創建表,唯一的列更改排序順序
- 14. 如何保存按照創建順序排序的列表
- 15. 創建OID到Postgres表創建後
- 16. 創建升序排列的列表
- 17. 按創建順序對散列表排序
- 18. 從API響應創建的列表中創建新列表
- 19. WPF創建列表
- 20. 創建子列表
- 21. R創建列表
- 22. 創建新列表
- 23. 創建列表F#
- 24. 創建列表框
- 25. Python3創建列表
- 26. TCL創建列表
- 27. 創建OrderedDicts列表
- 28. 創建從列表
- 29. html5創建列表
- 30. 創建SharePoint列表
什麼是需要重新排列列?您可以在報表中以任意順序選擇它們,也可以按任意順序插入它們。 – Jeff 2013-03-14 14:26:52
我同意詢問「爲什麼」的所有評論和答案,因爲沒有理由改變列順序。然而,在12c中有一個技巧:http://tkyte.blogspot.com.au/2013/07/12c-silly-little-trick-with-invisibility.html – 2013-07-03 00:53:10