31歳ほぼ未経験からIT業界へ転職。備忘録と勉強になればと思いサイトを立ち上げました。

IT技術のあれこれ

MySQL

MySQLのカラムデータの編集

投稿日:

スポンサーリンク

※データベース初心者のため、誤っている情報の可能性があります。

コマンドを実行する際は、必ず自己責任でお願いします。

当サイトでは一切の責任は負えませんので、ご了承下さい。

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);

 

-MySQL
-

Copyright© IT技術のあれこれ , 2024 AllRights Reserved.