回答:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
これにより、指定された列のデータ型が変更されます
変更する列の数によっては、スクリプトを生成するか、ある種のmysqlクライアントGUIを使用するのが最適な場合があります。
特定のタイプのすべての列を別のタイプに変更する場合は、次のようなクエリを使用してクエリを生成できます。
select distinct concat('alter table ',
table_name,
' modify ',
column_name,
' <new datatype> ',
if(is_nullable = 'NO', ' NOT ', ''),
' NULL;')
from information_schema.columns
where table_schema = '<your database>'
and column_type = '<old datatype>';
たとえば、列をからtinyint(4)
に変更する場合は、次のbit(1)
ように実行します。
select distinct concat('alter table ',
table_name,
' modify ',
column_name,
' bit(1) ',
if(is_nullable = 'NO', ' NOT ', ''),
' NULL;')
from information_schema.columns
where table_schema = 'MyDatabase'
and column_type = 'tinyint(4)';
次のような出力を取得します。
alter table table1 modify finished bit(1) NOT NULL;
alter table table2 modify canItBeTrue bit(1) NOT NULL;
alter table table3 modify canBeNull bit(1) NULL;
!! 一意の制約は保持されませんが、別のif
-parameter toで簡単に修正できconcat
ます。必要に応じて、実装するかどうかは読者に任せます。
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
例:
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
alter table ... change ...
たとえば、次の方法を使用します。
mysql> create table yar (id int);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into yar values(5);
Query OK, 1 row affected (0.01 sec)
mysql> alter table yar change id id varchar(255);
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc yar;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
列のデフォルト値を設定することもできます。それには、DEFAULTキーワードに続けて値を追加します。
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
これはMariaDB(テスト済みバージョン10.2)でも機能します
ALTER TABLE
、列に既にデータが含まれている場合でも、以下の回答(を使用)は実際には機能します。ただし、float型の列を整数型の列に変換すると、その中の整数以外の値は最も近い整数に丸められます。