列的维护

一、重命名列

alter table schema.table_name

  rename column old_name_column

  to new_name_column

修改列名称是有限制的,如果在该列上建有索引,那么该列的列名称就不能修改。如果想要修改就必须删除该列上的索引,对于主键索引尽量避免修改主键列名称。

另外修改表中一列的列名称后,基于该表建立的视图,触发器,函数,过程,软件包都将失效,因此需要重新编译。对于大型是数据库修改列名称的代价是很高的,尽量避免修改列名称。

二、删除列

alter table schema.table_name

  drop column column_name

  cascade constraints checkpoint  行数

alter语句是ddl语句直接修改数据字典,故删除列后是无法恢复的

删除一列后,表中至少应该还有一列

在一个大型的数据库中删除一列数据时非常耗时的,并且需要很大的还原空间。这对数据库系统的效率的冲击是很大的,所以应该避免在系统繁忙时执行删除列的ddl语句

通过在以上ddl语句中使用checkpoint 行数  可以减少还原磁盘空间的使用量。

checkpoint 500

在oracle执行以上命令后每执行500次的操作就会产生一个检查点,如果在执行以上命令期间系统崩溃了,当重启系统后该命令可以从检查点继续执行工作,不必重新开始。

其命令格式如下:

alter table schema.table_name drop columns continue;

为避免在系统繁忙时执行删除类的命令,可以使用set unused子句,把表中的某一列置为无用

alter table schema.table_name set unused column_name cascade constraints;

该语句是ddl语句一旦设置为无用的列就无法再恢复啦

当数据库空闲时使用一下ddl语句删除无用的列:

alter table schema.table_name

  drop unused columns checkpoint 行数

如果执行期间系统崩溃,那么重启后不必从开始重新执行。可以从上一个检查点执行

alter table schema.table_name 

  drop columns continue 行数。

原文地址:https://www.cnblogs.com/moonfans/p/3877572.html