目前我有以下MySQL表: Employees (empID, empName, department);
我想将表更改为以下内容: Employees (empID, department, empName);
如何使用ALTER语句完成此操作?
注意:我只想更改列位置.
Ted*_*opp 315
如果empName是VARCHAR(50)列:
ALTER TABLE Employees MODIFY COLUMN empName VARCHAR(50) AFTER department;
Run Code Online (Sandbox Code Playgroud)
编辑
根据评论,你也可以这样做:
ALTER TABLE Employees CHANGE COLUMN empName empName VARCHAR(50) AFTER department;
Run Code Online (Sandbox Code Playgroud)
请注意,重复empName是故意的.你必须告诉MySQL你想保留相同的列名.
您应该知道两种语法版本都特定于MySQL.例如,它们不适用于PostgreSQL或许多其他DBMS.
另一个编辑:正如@Luis Rossi在评论中指出的那样,您需要在AFTER修饰符之前完全指定更改的列定义.上面的示例只有VARCHAR(50),但如果您需要其他特性(例如NOT NULL或默认值),您还需要包含这些特性.有关详细信息,请参阅文档ALTER TABLE.
小智 63
更改列位置:
ALTER TABLE Employees
CHANGE empName empName VARCHAR(50) NOT NULL AFTER department;
Run Code Online (Sandbox Code Playgroud)
如果需要将其移动到第一个位置,则必须在ALTER TABLE CHANGE [COLUMN]查询结束时使用术语FIRST:
ALTER TABLE UserOrder
CHANGE order_id order_id INT(11) NOT NULL FIRST;
Run Code Online (Sandbox Code Playgroud)
小智 11
phpMyAdmin在表的结构视图中为此提供GUI.选中以选择要移动的列,然后单击列列表底部的更改操作.然后,您可以更改所有列属性,并在屏幕的最右侧找到"移动列"功能.
当然,这只是在完美的顶级答案中构建查询,但GUI粉丝可能会欣赏替代方案.
我的phpMyAdmin版本是4.1.7