今回は既存の 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キー」を押します。
*「-b」オプションを付けて起動するとビープ音が出なくなります。
【2】以下のSQL文を入力し、使用するデータベースを選択します。
USE SampleDB040;
【3】以下のSQL文を入力し、データベース内にあるテーブルを確認します。
SHOW TABLES;
今回は T01Prefecture テーブルを操作します。
【4】以下のSQL文を入力し、テーブルの構造を確認します。
DESC T01Prefecture;
まだフィールドは2つだけです。
【5】新しいフィールドを追加します。以下のSQL文を入力し、「Enterキー」を押します。
ALTER TABLE T01Prefecture ADD AREA_CD INT(3);
【6】メッセージが表示され、フィールドが追加されました。
【7】以下のSQL文を入力し、テーブルの構造を確認します。
DESC T01Prefecture;
AREA_CD が追加されていることが確認できました。
【8】以下のSQL文を入力し、テーブルのデータを確認します。
SELECT * FROM T01Prefecture;
AREA_CD にはまだデータが入力されていないので NULL の状態です。
【9】以下のSQL文を入力し、テーブルのレコードを検索します。
SELECT * FROM T01Prefecture
WHERE PREF_CD BETWEEN 1 AND 7;
今表示されている都道府県の AREA_CD を「1」にしたいわけです。SELECT 文で使った WHERE 句 をUPDATE 文で使うことで、対象となるレコードを一度に更新することができます。
【10】以下のSQL文を入力し、テーブルのデータをまとめて更新します。
UPDATE T01Prefecture SET AREA_CD = 1
WHERE PREF_CD BETWEEN 1 AND 7;
【11】以下のSQL文を入力し、テーブルのデータを確認します。
SELECT * FROM T01Prefecture;
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文を入力し、テーブルのデータを確認します。
きちんと更新されていることが確認できました。
【14】以下の図を参考にMySQLを終了・停止します。
1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。
【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;
特にデータベースの操作に慣れないうちは、予想外のデータを更新したり削除してしまうことがあります。面倒がらずに確認する習慣を付けましょう。