Alter Physical Structure of table Oracle11gr2
Alter Physical Structure of table Oracle11gr2
我有一张表格
Name Age RollNo. A 1 10 B 2 20
现在我想永久地修改这个表格,使其看起来如下:
RollNo. Name Age 10 A 1 20 B 2
我应该如何修改这个表格,我只想改变表格的物理结构。
admin 更改状态以发布 2023年5月20日
您可以使用语句在Oracle中删除和创建表而不丢失数据
create table YOUR_TABLE_BU as select * from YOUR_TABLE
请通过此链接查看详细信息-如何在不复制数据的情况下创建Oracle表的副本?请尝试:
CREATE TABLE YOUR_TABLE_BU AS SELECT * FROM YOUR_TABLE; DROP TABLE YOUR_TABLE; CREATE TABLE YOUR_TABLE AS SELECT RollNo., Name, Age FROM YOUR_TABLE_BU; DROP TABLE YOUR_TABLE_BU;
为什么你想这样做?
如果仅仅是因为想在使用SELECT *
时有正确的列顺序,那就一开始不应该使用*
。在查询中总是使用具体的列清单。
如果是因为你认为这样做可以提高性能,你是否进行了实际的测量?我怀疑你很难找到许多场景,其中物理列顺序在性能方面有明显影响。对于像你的这样狭窄的行,有些“链式行”情况可能会影响性能(请参见本文中的“行链接”部分),但这并不适用于狭窄的行。
话虽如此,你可以:
CREATE TABLE NEW_TABLE AS SELECT <不同的列顺序> FROM OLD_TABLE
。- 在
NEW_TABLE
上重新创建所有相关的约束(如键、FK)、索引和触发器/过程。 DROP TABLE OLD_TABLE
。ALTER TABLE NEW_TABLE RENAME TO OLD_TABLE
。
如果需要在接受更新的同时进行此操作,您还可以查看dbms_redefinition。