MySQL安排现有的表列

我怎样才能改变MySQL表中某个现有列的位置?

例如:我想将列的用户名从当前位置移动到所有的列之后,或者在我的表格中的某个列之前我想要它。

如果你喜欢,你可以改变列的顺序。

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

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

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

谢谢你们所有的回应,我已经完成了。

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

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

再次感谢你们:)

简单的使用这个查询

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

要么

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

你的SQL应该是这样的:

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

完成! 一条线改变位置,没有别的事情要做。


我build议不要使用@ rahim-asgari推荐的ALTER TABLE MYTABLE ADD MYFILED INT( 5 ) NOT NULL AFTER POSITION ,因为您将会:

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

句法:

 ALTER TABLE `TableName` MODIFY `FieldToBeMoved` [SAME FIELD SETTINGS] [ACTION] `TargetPosition` 
  • [SAME FIELD SETTINGS]
    指的是你的领域的configuration。 TINYINT,VARCHAR,TEXT等。请记住包含大小。 EJ。 varchar (255)

  • [ACTION]
    您可以BEFORE特定字段BEFOREAFTER移动字段。
    相应地replace为BEFOREAFTER


如果你的…

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

ALTER TABLE [tbl_name] MODIFY|CHANGE [column definition] [AFTER|BEFORE] [a_column]都可以工作。 如果您只想更改列顺序而不是重命名,那么MODIFY会更好。 另外,您不能将多个列重新排列在单个ALTER TABLE语句中。 IE来重新排列整数列col1,col2,col3为了按照col3,col2,col1的顺序,你将不得不做

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

你不能改变现有的列的顺序。

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

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

要么

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

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