• ベストアンサー

MySQLで新しくフィールドを、ある場所に追加したい。

普通にフィールドを追加するときは、 add table テーブル名 add 追加するフィールド名 その属性; と書くとおもうのですが、これだとそのテーブルの一番下にフィールドが追加されてしまうと思います。 例えば、上から何番目(あるいは、あるフィールドとあるフィールドの間)にフィールドを追加したい、という処理はできるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>add table テーブル名 add 追加するフィールド名 その属性; alter tableの誤りですよね? alter table テーブル名 add 追加する列名 そのデータ型等  [ { first | after 列名 } ] といった構文で、追加位置を指定できます。 しかし、alter tableの処理では、テーブルの全行のコピーが発生する(※)ので、データ件数が多い場合は注意しましょう。 ※定義変更対象のテーブルから、定義後の状態を反映した新たなテーブルが作成され、全件コピーすると同時に変更後の定義を反映する。その後、定義変更前のテーブル削除、定義変更を反映したテーブルの名称を変更前の名称に変更 http://dev.mysql.com/doc/refman/4.1/ja/alter-table.html  

その他の回答 (1)

回答No.2

#1です。 MySQLのalter tableの処理を書きましたが、alter tableで格納済のすべての行を更新するというのは、MySQLの独自仕様です。 商用RDBMSでは、定義変更しても、格納済の行はその時点では更新しないというのが主流です。そのため、列の追加位置を指定できなかったり、not null、defaultなどは指定できない形にし、alter tableの処理が重くならないようにしています。

関連するQ&A