スポンサードリンク



MySQL 既存のテーブルへフィールドを追加する方法。

MySQLではSQL文を使い、既存のテーブルへフィールドを追加したり、フィールド名の変更、データ型の変更、フィールドを削除することが簡単にできます。

今回は既存の T01Prefecture テーブルに新たに AREA_CD というフィールドを追加します。そしてエリアごとに一度にまとめてレコードを更新する方法を解説します。レコードをまとめて更新したり削除するには、「WHERE句」の使い方が大事です。

T01Prefecture の AREA_CD には数値を保存しますが、後でT00Area テーブルを参照することでエリア名を表示できます。

各都道府県は以下のエリアに分類することにします。

1 北海道・東北 1~7
2 関東 8~15
3 信越・北陸 16~20
4 東海 21~24
5 近畿 25~30
6 中国 31~35
7 四国 36~39
8 九州・沖縄 40~47


MySQLに接続するユーザーは「pgtop」ですので、間違えないように気を付けてください。


【1】以下の図を参考にMySQLを開始・接続します。

1.コマンドプロンプトを起動します。
2.「net start mysql」と入力し、「Enterキー」を押します。
3.「mysql -u pgtop -p -b」と入力し、「Enterキー」を押します。
4.パスワードを求められるので「12345」入力し、「Enterキー」を押します。

mysql-114.gif

*「-b」オプションを付けて起動するとビープ音が出なくなります。


【2】以下のSQL文を入力し、使用するデータベースを選択します。

USE SampleDB040;
mysql-116.gif


【3】以下のSQL文を入力し、データベース内にあるテーブルを確認します。

SHOW TABLES;
mysql-217.gif

今回は T01Prefecture テーブルを操作します。


【4】以下のSQL文を入力し、テーブルの構造を確認します。

DESC T01Prefecture;
mysql-216.gif

まだフィールドは2つだけです。


【5】新しいフィールドを追加します。以下のSQL文を入力し、「Enterキー」を押します。

ALTER TABLE T01Prefecture ADD AREA_CD INT(3);

mysql-218.gif


【6】メッセージが表示され、フィールドが追加されました。

mysql-219.gif


【7】以下のSQL文を入力し、テーブルの構造を確認します。

DESC T01Prefecture;
mysql-220.gif

AREA_CD が追加されていることが確認できました。


【8】以下のSQL文を入力し、テーブルのデータを確認します。

SELECT * FROM T01Prefecture;
mysql-221.gif

AREA_CD にはまだデータが入力されていないので NULL の状態です。


【9】以下のSQL文を入力し、テーブルのレコードを検索します。

SELECT * FROM T01Prefecture
WHERE PREF_CD BETWEEN 1 AND 7;

mysql-222.gif

今表示されている都道府県の AREA_CD を「1」にしたいわけです。SELECT 文で使った WHERE 句 をUPDATE 文で使うことで、対象となるレコードを一度に更新することができます。


【10】以下のSQL文を入力し、テーブルのデータをまとめて更新します。

UPDATE T01Prefecture SET AREA_CD = 1
WHERE PREF_CD BETWEEN 1 AND 7;

mysql-223.gif


【11】以下のSQL文を入力し、テーブルのデータを確認します。

SELECT * FROM T01Prefecture;

mysql-224.gif

PREF_CD が 1~7 の都道府県の AREA_CD が「1」に更新されています。


【12】同様に以下のSQL文を実行して AREA_CD を更新します。


UPDATE T01Prefecture SET AREA_CD = 2
WHERE PREF_CD BETWEEN 8 AND 15;

UPDATE T01Prefecture SET AREA_CD = 3
WHERE PREF_CD BETWEEN 16 AND 20;

UPDATE T01Prefecture SET AREA_CD = 4
WHERE PREF_CD BETWEEN 21 AND 24;

UPDATE T01Prefecture SET AREA_CD = 5
WHERE PREF_CD BETWEEN 25 AND 30;

UPDATE T01Prefecture SET AREA_CD = 6
WHERE PREF_CD BETWEEN 31 AND 35;

UPDATE T01Prefecture SET AREA_CD = 7
WHERE PREF_CD BETWEEN 36 AND 39;

UPDATE T01Prefecture SET AREA_CD = 8
WHERE PREF_CD BETWEEN 40 AND 47;



【13】以下のSQL文を入力し、テーブルのデータを確認します。

mysql-225.gif

きちんと更新されていることが確認できました。


【14】以下の図を参考にMySQLを終了・停止します。

1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。

mysql-87.gif


【15】コマンドプロンプトは閉じてください。


【解説】

(1)既存のテーブルを変更するときは「ALTER」(変更)を使います。「ADD」はフィールドを追加します。

追加
ALTER TABLE T01Prefecture ADD AREA_CD INT(3);

データ型を変更
ALTER TABLE T01Prefecture CHANGE AREA_CD AREA_CD BIGINT;

フィールド名を変更
ALTER TABLE T01Prefecture CHANGE AREA_CD AREA_ID INT(3);

削除
ALTER TABLE T01Prefecture DROP AREA_CD;


(2)更新や削除の前には、一度検索して対象となるレコードが予想通りか確認することが大事です。あとはWHERE句をそのまま使えばミスを防ぐことができます。

SELECT * FROM T01Prefecture
WHERE PREF_CD BETWEEN 1 AND 7;

UPDATE T01Prefecture SET AREA_CD = 1
WHERE PREF_CD BETWEEN 1 AND 7;

特にデータベースの操作に慣れないうちは、予想外のデータを更新したり削除してしまうことがあります。面倒がらずに確認する習慣を付けましょう。


スポンサードリンク






MySQL初心者入門講座TOPへ