60

を使用して列の名前を変更することはできませんmodify column syntaxが、できchange column syntaxます。

私の質問は: の主な使用法はmodify syntax何ですか?

例えば、

alter table tablename change col1 col1 int(10) not null

それ以外の

alter table tablename modify col1 int(10) not null



編集さ
れた質問が置き換えられました

の主な用途はmodify syntax何ですか?

上記の質問は以下に置き換えられました

列を変更する代わりに列を変更する必要があるのはなぜですか?

4

5 に答える 5

86

CHANGE COLUMNすでにMySQLデータベースを作成していて、列の1つに間違った名前が付けられていると判断した場合は、それを削除して置き換える必要はありません。changecolumnを使用して名前を変更するだけです。

ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;

MODIFY COLUMNこのコマンドは、列の名前を変更せずに、CHANGE COLUMNで実行できるすべてのことを実行します。MySQLで列のサイズを変更する必要がある場合は、modifySQLコマンドを使用できます。これを行うことにより、以前よりも多くのまたは少ない文字を許可できます。変更などを使用して列の名前を変更することはできません

ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;

注:ALTER TABLEは、列名、サイズ、ドロップ列を変更するためのテーブル手段の変更に使用されます。CHANGECOLUMNおよびMODIFYCOLUMNコマンドは、ALTERTABLEコマンドを使用しないと使用できません。

于 2013-02-08T07:12:47.873 に答える
4

auto_increment 以外の列を auto_increment ステートメントにしようとして 1 時間以上努力した結果、1 つの違いが見つかりました。

alter table `doctor_experience` modify column `id` int(11) unsigned auto_increment

動作しますが、ステートメント:

alter table `doctor_experience` change column `id` `id` int(11) unsigned auto_increment 

エラーを報告します。

于 2016-11-21T15:04:49.747 に答える
2

それは同じです。別の構文(私が知っているOracle ALTER TABLE)をサポートするために行われました。どちらも使用できます。

注:ALTER TABLE CHANGE old_col_name new_col_name構文では、1 つのコマンドを使用して列の名前を変更できます。

于 2013-02-08T06:57:43.493 に答える