代码之家  ›  专栏  ›  技术社区  ›  Robert Gould

在表格中间插入新列?

  •  7
  • Robert Gould  · 技术社区  · 15 年前

    当使用“alter table tab 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 
    

    在第三列第四列之前。

    除了从头开始重建表之外,还有什么标准的SQL可以完成工作吗?但是,如果没有标准的SQL,我仍然可以为Oracle使用一些依赖于供应商的解决方案,但是标准的解决方案也是最好的。

    谢谢。

    5 回复  |  直到 7 年前
        1
  •  12
  •   Raj More    15 年前

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

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

    有几个工具可以为您这样做,根据表的大小,这可能是一个密集的操作。

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

        2
  •  5
  •   user2894607    10 年前

    它起作用了。

    ALTER TABLE tablename ADD columnname datatype AFTER columnname;
    
        3
  •  2
  •   ysth    15 年前

    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重新定义包来更改结构”。

        4
  •  2
  •   Orhan Cinar    15 年前

    更改表表名 更改列列名 位置X;

        5
  •  1
  •   Sherazin    11 年前

    我知道这是个老话题(2009年),但也许它能帮助那些仍在寻找答案的人。在MySQL中,它的工作原理是2在表中的任何地方添加一列。

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

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

    我在Xampp(mysql admin)中找到它,当我使用它2时,在mysql表的中间插入一列。

    希望它有帮助。