Inserting new columns in the middle of a table?

后端 未结 6 475
陌清茗
陌清茗 2020-12-20 14:29

When one uses \"ALTER TABLE tab ADD col\", the new column gets added to the end of the table. For example:

TABLE: TAB
COL_1 COL_2 COL_4

ALTER TABLE TAB ADD          


        
相关标签:
6条回答
  • 2020-12-20 14:38

    http://www.orafaq.com/wiki/SQL_FAQ#How_does_one_add_a_column_to_the_middle_of_a_table.3F says it can't be done, and suggests workarounds of renaming the table and doing a create table as select... or (something I am unfamiliar with) "Use the DBMS_REDEFINITION package to change the structure".

    0 讨论(0)
  • 2020-12-20 14:46

    It works.

    ALTER TABLE tablename ADD columnname datatype AFTER columnname;
    
    0 讨论(0)
  • 2020-12-20 14:46

    I know it's old subject (2009) but maybe it will help someone that still looks for an answer. In MySQL, it works 2 add a column anywhere in the table.

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

    This is 2 enter a text column, but u can set whatever properties u want for the new column, just make sure u write them with caps.

    I found it with Xampp, MySQL admin, when i used it 2 insert a column in the middle of a MySQL table.

    Hope it helps.

    0 讨论(0)
  • 2020-12-20 14:50

    By default, columns are only added at the end.

    To insert a column in the middle, you have to drop and recreate the table and all related objects (constraints, indices, defaults, relationships, etc).

    Several tools do this for you, and depending on the size of the table, this may be an intensive operation.

    You may also consider creating views on the table that display columns in the order of preferrence (overriding the actual order in the table).

    0 讨论(0)
  • 2020-12-20 14:55

    ALTER TABLE TABLENAME ALTER COLUMN COLUMNNAME POSITION X;

    0 讨论(0)
  • 2020-12-20 14:55

    As per my small research the only way is to create the views of the previous table in a required order of columns or else recreate the table from the scratch and in some sql query tools the 'AFTER' keyword might work".

    0 讨论(0)
提交回复
热议问题