現在、次のMySQLテーブルがあります。Employees (empID, empName, department);
テーブルを次のように変更したい:Employees (empID, department, empName);
ALTER
ステートメントを使用してこれをどのように行うことができますか?
注:列の位置のみを変更したい。
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
参照してください。
列の位置を変更:
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;