街中で見かけて「グッときた人」の思い出

普通にフィールドを追加するときは、

add table テーブル名 add 追加するフィールド名 その属性;

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

よろしくお願いします。

A 回答 (2件)

>add table テーブル名 add 追加するフィールド名 その属性;



alter tableの誤りですよね?

alter table テーブル名 add 追加する列名 そのデータ型等
 [ { first | after 列名 } ]

といった構文で、追加位置を指定できます。

しかし、alter tableの処理では、テーブルの全行のコピーが発生する(※)ので、データ件数が多い場合は注意しましょう。

※定義変更対象のテーブルから、定義後の状態を反映した新たなテーブルが作成され、全件コピーすると同時に変更後の定義を反映する。その後、定義変更前のテーブル削除、定義変更を反映したテーブルの名称を変更前の名称に変更

http://dev.mysql.com/doc/refman/4.1/ja/alter-tab …  
    • good
    • 0

#1です。



MySQLのalter tableの処理を書きましたが、alter tableで格納済のすべての行を更新するというのは、MySQLの独自仕様です。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報