如何更改 MySQL 表中某个现有列的位置?
例如:我想将列用户名从其当前位置移至所有列之后,或者我想在表格中的任何某列之前使用它。
答案 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)
ALTER TABLE `Customers` MODIFY `UserName` INT (11) AFTER `Orders`
完成! 一行改变了位置,没有其他事可做。
我建议反对ALTER TABLE MYTABLE ADD MYFILED INT( 5 ) NOT NULL AFTER POSITION
的{{3}}推荐,因为您将:
ALTER TABLE `TableName` MODIFY `FieldToBeMoved` [SAME FIELD SETTINGS] [ACTION] `TargetPosition`
<强> [SAME FIELD SETTINGS]
强>
指您所在领域的配置。 TINYINT,VARCHAR,TEXT等。请记住包括尺寸。 EJ。 varchar (255)
<强> [ACTION]
强>
您可以移动字段 BEFORE
或 AFTER
特定字段。
相应地替换BEFORE
或AFTER
。
如果你......
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