下面介绍两种 在Oracle中修改表的列名的方式。
一、(在sqlplus工具下)使用如下命令:
alter table <table_name> rename column <column_old_name> to <columne_new_name>;
注释:
1、博友一说:9i 以下版本应该没有这条命令,9i以上不知道。
2、博友二说:可以用如下办法达到修改表列名的目的:在表上添加一个新列,该新列的列名就是你想取的那个列名,之后用你想修改它列名的那个列下的数据插入到该新列中,最好删除你想修改它列名的那个列。
3、博友三说:8i以下版本只能用重新建一个新表的办法:
2、博友二说:可以用如下办法达到修改表列名的目的:在表上添加一个新列,该新列的列名就是你想取的那个列名,之后用你想修改它列名的那个列下的数据插入到该新列中,最好删除你想修改它列名的那个列。
3、博友三说:8i以下版本只能用重新建一个新表的办法:
先修改表名: alter table <table_name> renameato b; //这里 <table_name> 为a
再以原来表名创建一个新表:create table a (..,new_col_name,..) as select ..,old_col_name,..) from b;
顺便说下,如果 alter table a rename to b; 写成了alter table a rename a to b; ,则会提示如下:
ERROR 位于第 1 行:
ORA-14155: PARTITION 或 SUBPARTITION 关键字丢失
由此看出,
如果表a不是分区表,那么就不能写成alter table a rename a to b;这个样子。
如果表a是分区表, 那么就可以写成alter table a rename a to b;这个样子,但是得加上关键字PARTITION 或 SUBPARTITION,即
alter table a rename PARTITION c to b;,其中c是分区表a上一个分区的名字。
二、使用存储过程sp_rename修改列名及表名:
sql 修改列名及表名 sp_rename
sql 修改列名及表名
因需求变更要改表的列名,平常都是跑到Enterprise manager中选取服务器->数据库->表,然后修改表,这样太麻烦了,查了一下,可以用script搞定,
代码如下:
EXEC sp_rename '表名.[原列名]', '新列名', 'column'
******************************************************************************************************
Transact-SQL 参考