在表格中间插入新列?

时间:2009-11-16 08:32:35

标签: sql database oracle

当使用“ALTER TABLE选项卡ADD col”时,新列将添加到表的末尾。例如:

TABLE: TAB
COL_1 COL_2 COL_4

ALTER TABLE TAB ADD COL_3

表将成为

TABLE: TAB
COL_1 COL_2 COL_4 COL_3

然而,由于我的示例列的命名表明我实际上喜欢这个表最终会像这样:

TABLE: TAB
COL_1 COL_2 COL_3 COL_4 

在COL_4之前使用COL_3。

除了从头开始重建表之外,是否有任何标准SQL可以完成工作?但是,如果没有标准的SQL,我仍然可以使用一些供应商相关的Oracle解决方案,但同样标准的解决方案也是最好的。

感谢。

7 个答案:

答案 0 :(得分:12)

默认情况下,只会在末尾添加列。

要在中间插入列,您必须删除并重新创建表和所有相关对象(约束,索引,默认值,关系等)。

有几个工具可以帮到您,并且根据表的大小,这可能是一个密集的操作。

您还可以考虑在表格上创建按优先顺序显示列的视图(覆盖表格中的实际顺序)。

答案 1 :(得分:5)

有效。

ALTER TABLE tablename ADD columnname datatype AFTER columnname;

答案 2 :(得分:2)

http://www.orafaq.com/wiki/SQL_FAQ#How_does_one_add_a_column_to_the_middle_of_a_table.3F表示无法完成,并建议重命名表并执行create table as select...或(我不熟悉的事情)“使用DBMS_REDEFINITION包来更改结构”的变通方法。

答案 3 :(得分:2)

  

ALTER TABLE TABLENAME   ALTER COLUMN COLUMNNAME   位置X;

答案 4 :(得分:1)

我知道这是一个古老的主题(2009年),但也许它会帮助那些仍在寻找答案的人。在MySQL中,它可以在表中的任何位置添加一列。

ALTER TABLE `tablename` ADD `column_name1` TEXT NOT NULL AFTER `column_name2`;

这是2输入一个文本列,但你可以为新列设置你想要的任何属性,只要确保你用大写字母写它们。

我发现它与Xampp,MySQL管理员,当我使用它时2在MySQL表的中间插入一列。

希望它有所帮助。

答案 5 :(得分:0)

根据我的小型研究,唯一的方法是按照所需的列顺序创建上一个表的视图,或者从头开始重新创建表,并且在某些sql查询工具中,'AFTER'关键字可能有效。“ / p>

答案 6 :(得分:0)

如果你有表 col_1、col_2、col_4,你想在 col_2 之后添加 col_3,你可以简单地这样做:

alter table <table_name> modify col_4 invisible;
alter table <table_name> add col_3 <type>;
alter table <table_name> modify col_4 visible;