スポンサーリンク
※データベース初心者のため、誤っている情報の可能性があります。
コマンドを実行する際は、必ず自己責任でお願いします。
当サイトでは一切の責任は負えませんので、ご了承下さい。
MySQLのテーブルを作成した時に、カラムのデータ型を間違えて登録してしまったので、編集する方法を備忘録として残していきます。
MySQLのカラムデータの編集
カラムデータの確認
SHOW COLUMNS FROM zaiko;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| date | date | YES | | NULL | |
| time | datetime | YES | | NULL | |
| product | varchar(100) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
「Field」の「time」でデータ型(Type)の「datetime」を間違えて追加してしまったので、修正していきます。
「カラム名のみ修正」と「カラム名とデータ型」の修正を試してみます。
カラム名のみ修正
データ型(Type)は変更せずに、カラム名のみ修正します。
ALTER TABLE テーブル名 RENAME COLUMN 現カラム名 TO 新カラム名;
カラム名を「time」から「newcol」に変更します。
ALTER TABLE zaiko RENAME COLUMN time TO newcol;
実行すると、以下の結果が表示されました。
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
「カラム名のみ」変更されたか確認します。
SHOW COLUMNS FROM zaiko;
mysql> SHOW COLUMNS FROM zaiko;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| date | date | YES | | NULL | |
| newcol | datetime | YES | | NULL | |
| product | varchar(100) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
カラム名のみ変更され、データ型(Type)は変更されていないことが確認できました。
カラム名とデータ型の修正
カラム名とデータ型も修正します。
ALTER TABLE テーブル名 CHANGE COLUMN 現カラム名 新カラム名 データ型 制約;
カラム名を「newcol」から「price」に変更して、データ型を「datetime」から「varchar」に変更します。
ALTER TABLE zaiko CHANGE COLUMN newcol price varchar(255);
データ型を「int」にしたかったのですが、すでにデータが入っており、恐らく入っているデータのなかに、intでは取り扱えないデータがあったため、「varchar」で試したところ成功しました。
データの更新
「price」に入っているデータを更新します。
修正前のデータを確認します。
select * from zaiko;
mysql> select * from zaiko;
+------+------------+---------------------+-----------+
| id | date | price | product |
+------+------------+---------------------+-----------+
| 1 | 2020-05-24 | 2020-05-24 13:30:00 | カレー |
+------+------------+---------------------+-----------+
修正前にはpriceには、「2020-05-24 13:30:00」が入っています。
「2020-05-24 13:30:00」を「500」に更新します。
データを更新します。
update テーブル名 set 対象カラム=設定値 where 抽出条件;
update zaiko set price=500 where id='1';
修正後のデータを確認します。
select * from zaiko;
mysql> select * from zaiko;
+------+------------+-------+-----------+
| id | date | price | product |
+------+------------+-------+-----------+
| 1 | 2020-05-24 | 500 | カレー |
+------+------------+-------+-----------+
「price」の「2020-05-24 13:30:00」が「500」に更新されました。
priceの値が整数のみに変更されたので、試しに「price」のデータ型を「varchar」から「int」に変更してみましたが、成功しました。
ALTER TABLE zaiko CHANGE COLUMN price price int(255);