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
,因为您将会:
- 添加一个新的字段
- 将旧字段的数据复制到新字段中
- 修改任何约束/索引
- 删除旧字段
句法:
ALTER TABLE `TableName` MODIFY `FieldToBeMoved` [SAME FIELD SETTINGS] [ACTION] `TargetPosition`
-
[SAME FIELD SETTINGS]
指的是你的领域的configuration。 TINYINT,VARCHAR,TEXT等。请记住包含大小。 EJ。varchar (255)
-
[ACTION]
您可以BEFORE
特定字段BEFORE
或AFTER
移动字段。
相应地replace为BEFORE
或AFTER
。
例
如果你的…
- 表名:
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