Alter Physical Structure of table Oracle11gr2

9 浏览
0 Comments

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日
0
0 Comments

您可以使用语句在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;

0
0 Comments

为什么你想这样做?

如果仅仅是因为想在使用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

0