MySQL安排现有的表列

时间:2010-09-28 04:04:08

标签: mysql

如何更改 MySQL 表中某个现有列的位置?

例如:我想将列用户名从其当前位置移至所有列之后,或者我想在表格中的任何某列之前使用它。

6 个答案:

答案 0 :(得分:97)

如果您愿意,可以更改列的顺序。

如果您的用户名列是varchar(255),那么:

alter table `mytable` 
change column username username varchar(255) after `somecolumn`;

如果有助于更好地阅读表格定义,那么为什么不呢?

答案 1 :(得分:44)

感谢各位回复,我已经完成了。

ALTER TABLE tbl_user MODIFY gender char(1) AFTER username;

那就像组织你的桌子吧?你不希望你的主键字段在你的表的最后一个顺序,至少我知道如果我遇到这个问题如何协调它,我试图在基于文本的数据库中使用而不是使用gui现在

再次感谢大家:)

答案 2 :(得分:19)

简单使用此查询

alter table `admin` modify id int(11) first;

alter table `admin` modify id int(11) after `some_column`;

答案 3 :(得分:9)

您的SQL应如下所示:

ALTER TABLE `Customers` MODIFY `UserName` INT (11) AFTER `Orders`

完成! 一行改变了位置,没有其他事可做。


我建议反对ALTER TABLE MYTABLE ADD MYFILED INT( 5 ) NOT NULL AFTER POSITION的{​​{3}}推荐,因为您将:

  1. 添加新字段
  2. 将旧字段的数据复制到新字段
  3. 修改任何约束/索引
  4. 删除旧字段

  5. 语法:

    ALTER TABLE `TableName` MODIFY `FieldToBeMoved` [SAME FIELD SETTINGS] [ACTION] `TargetPosition`
    
    • <强> [SAME FIELD SETTINGS]
      指您所在领域的配置。 TINYINT,VARCHAR,TEXT等。请记住包括尺寸。 EJ。 varchar (255)

    • <强> [ACTION]
      您可以移动字段 BEFORE AFTER 特定字段。
      相应地替换BEFOREAFTER


    实施例

    如果你......

    • 表名:Customers
    • 要移动的字段:UserName
    • UserName设置:int(11)
    • 目标位置(表格的最后一个字段):Orders

答案 4 :(得分:5)

ALTER TABLE [tbl_name] MODIFY|CHANGE [column definition] [AFTER|BEFORE] [a_column]两者都有效。如果您只想更改列顺序但不重命名,则MODIFY会更好。此外,您不能组合在单个ALTER TABLE语句中重新排序的多个列。 I.E.重新排列整数列col1,col2,col3顺序为col3,col2,col1的顺序,你将不得不这样做

ALTER TABLE tbl_name MODIFY col3 int FIRST; ALTER TABLE tbl_name MODIFY col2 int AFTER col3;

答案 5 :(得分:-5)

您无法更改现有列的顺序。

但你可以删除你想要改变位置的列,并使用这个命令将它添加到你想要的位置。

ALTER TABLE `MYTABLE` ADD `MYFILED` INT( 5 ) NOT NULL AFTER `POSITION` 

在表格的开头添加一个字段

ALTER TABLE `MYTABLE` ADD `MYFIELD` INT( 5 ) NOT NULL FIRST