如何更改MySQL表中某个现有列的位置?
例如:我想将列用户名从当前位置移动到所有列之后,或者我希望它在表中的某些列之前。
Answers:
您可以根据需要更改列的顺序。
如果您的用户名列为varchar(255),则:
alter table `mytable`
change column username username varchar(255) after `somecolumn`;
如果有助于更好地读取表定义,那为什么不呢?
ALTER TABLE ... MODIFY即使可行,也是可取的ALTER TABLE ... CHANGE。原因是后者具有更改列名的附加功能,这使您键入更多(容易出错,因为您可能会不小心更改列名:-)
ALTER TABLE `Customers` MODIFY `UserName` INT (11) AFTER `Orders`
做完了!一行可以更改位置,无事可做。
我建议不要使用@ rahim-asgari的建议ALTER TABLE MYTABLE ADD MYFILED INT( 5 ) NOT NULL AFTER POSITION,因为您将:
ALTER TABLE `TableName` MODIFY `FieldToBeMoved` [SAME FIELD SETTINGS] [ACTION] `TargetPosition`
[SAME FIELD SETTINGS]
指您的字段的配置。TINYINT,VARCHAR,TEXT等。请记住包括大小。jvarchar (255)
[ACTION]
您可以移动字段BEFORE或AFTER特定字段。
替换为BEFORE或AFTER相应地。
如果你的...
CustomersUserNameUserName 设置: int(11)OrdersALTER 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
mytable更改列用户名用户名varchar(255)“”,然后将其追加,因此它将成为“”更改表mytable更改列用户名用户名varchar(255)。