如何在MySQL表中移动列? [英] How to move columns in a MySQL table?
问题描述
当前,我有以下MySQL表:Employees (empID, empName, department);
Currently I am having the following MySQL table: Employees (empID, empName, department);
我要将表更改为以下内容:Employees (empID, department, empName);
I want to change the table to the following: Employees (empID, department, empName);
如何使用ALTER
语句完成此操作?
How can this be done using ALTER
statements?
注意:我只想更改列位置.
Note: I want to change only column positions.
推荐答案
如果empName是VARCHAR(50)列:
If empName is a VARCHAR(50) column:
ALTER TABLE Employees MODIFY COLUMN empName VARCHAR(50) AFTER department;
编辑
根据评论,您也可以执行以下操作:
Per the comments, you can also do this:
ALTER TABLE Employees CHANGE COLUMN empName empName VARCHAR(50) AFTER department;
请注意,重复empName
是故意的.您必须告诉MySQL您想保持相同的列名.
Note that the repetition of empName
is deliberate. You have to tell MySQL that you want to keep the same column name.
您应该注意,两种语法版本都特定于MySQL.例如,它们在PostgreSQL或许多其他DBMS中将无法使用.
You should be aware that both syntax versions are specific to MySQL. They won't work, for example, in PostgreSQL or many other DBMSs.
另一个正如@Luis Rossi在评论中指出的那样,您需要在AFTER
修饰符之前完全指定更改后的列定义.上面的示例仅包含VARCHAR(50)
,但是如果您需要其他特征(例如NOT NULL
或默认值),则还需要包括这些特征.有关更多信息,请参考 ALTER TABLE
上的文档.
Another edit: As pointed out by @Luis Rossi in a comment, you need to completely specify the altered column definition just before the AFTER
modifier. The above examples just have VARCHAR(50)
, but if you need other characteristics (such as NOT NULL
or a default value) you need to include those as well. Consult the docs on ALTER TABLE
for more info.
这篇关于如何在MySQL表中移动列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!