236

現在、次のMySQLテーブルがあります。Employees (empID, empName, department);

テーブルを次のように変更したい:Employees (empID, department, empName);

ALTERステートメントを使用してこれをどのように行うことができますか?

注:列の位置のみを変更したい。

4

4 に答える 4

390

empNameがVARCHAR(50)列の場合:

ALTER TABLE Employees MODIFY COLUMN empName VARCHAR(50) AFTER department;

編集

コメントによると、これを行うこともできます:

ALTER TABLE Employees CHANGE COLUMN empName empName VARCHAR(50) AFTER department;

の繰り返しempNameは意図的なものであることに注意してください。同じ列名を維持することをMySQLに伝える必要があります。

どちらの構文バージョンもMySQLに固有であることに注意してください。たとえば、PostgreSQLや他の多くのDBMSでは機能しません。

AFTER別の編集:コメントで@Luis Rossiが指摘しているように、修飾子の直前に変更された列定義を完全に指定する必要があります。上記の例にはが含まVARCHAR(50)れていますが、他の特性(NOT NULLまたはデフォルト値など)が必要な場合は、それらも含める必要があります。詳細については、のドキュメントをALTER TABLE参照してください。

于 2011-07-24T07:08:33.347 に答える
78

列の位置を変更:

ALTER TABLE Employees 
   CHANGE empName empName VARCHAR(50) NOT NULL AFTER department;

最初の位置に移動する必要がある場合は、ALTER TABLE CHANGE [COLUMN] クエリの最後に用語 FIRST を使用する必要があります。

ALTER TABLE UserOrder 
   CHANGE order_id order_id INT(11) NOT NULL FIRST;
于 2013-07-09T00:28:39.983 に答える