ゼミII実習


ゼミIIで使用しているテキストがあります

動的Webページ作成(その8)MySQL(その2)


前回からMySQLを使ってデータベースの操作について練習を始めました。MySQLクライアントのインターフェイスを使用してデータを入力していくのは不便なので、プログラムのファイルを使用した方法、並びにデータファイルを利用した方法について考えてみましょう。

1.プログラム用のファイルを用意して実行する

前回は練習のところでデータの入力まで終わっていますが、Cドライブにデータベースがあったため、再起動後はすべてなくなっています。

復習を兼ねて前回と同じ操作を行いますが、MySQLクライアントのインターフェイスを利用している場合、間違えた時や同じことを繰り返す場合には手間がかかります。

そこで今回はプログラム用のファイルを作ってから、これをMySQLクライアントのインターフェイスで実行する方法を試してみましょう。

まず、メモ帳などのテキストエディタを起動します。次のプログラムをコピーして貼り付けます。ファイル名はcreate_wcup2006.sqlとしてHドライブに保存しておきましょう。

CREATE DATABASE wcup2006;
USE wcup2006;
CREATE TABLE entry (
  wgroup CHAR(1),
  country VARCHAR(50),
  flag CHAR(10)
);
INSERT INTO entry
  (wgroup, country, flag)
  VALUES ('A', 'ドイツ', 'ger_tn.png');
INSERT INTO entry
  (wgroup, country, flag)
  VALUES ('A', 'コスタリカ', 'crc_tn.png');
INSERT INTO entry
  (wgroup, country, flag)
  VALUES ('A', 'ポーランド', 'pol_tn.png');
INSERT INTO entry
  (wgroup, country, flag)
  VALUES ('A', 'エクアドル', 'ecu_tn.png');
SELECT * FROM entry;

スタート>すべてのプログラム>教材ツール>MySQLの順にクリックしてください。MySQLの画面がコマンドプロンプトを使用して現れます。

メッセージが表示された後で次のようなプロンプトが表示されています。

mysql>

次のコマンドを入力して、最後にエンターキーを1回たたきます。

source  h:\create_wcup2006.sql

結果として次のような表示が出てくればOKです。

+--------+------------+------------+
| wgroup | country    | flag       |
+--------+------------+------------+
| A      | ドイツ     | ger_tn.png |
| A      | コスタリカ | crc_tn.png |
| A      | ポーランド | pol_tn.png |
| A      | エクアドル | ecu_tn.png |
+--------+------------+------------+
4 rows in set (0.02 sec)

実習室ではシステムの都合上再起動後はデータベースが消えてしまいますので、このようなファイルを用意しておくことで、いつでもデータベースを作り直すことができます。

<注意>実習室以外で試す場合には、データベースは消えることはないと思います。その場合にはプログラムのうちデータベースやテーブルを作る部分は必要ありません。

2.データファイルを使用してみる

1の最後にはINSERT INTO文によりデータが表entryに追加されました。ここでデータいったん表entryからすべて削除してみます。

次の文を使用します。

DELETE FROM entry;

次のように画面に表示されればOKです。

Query OK, 4 rows affected (0.29 sec)

うまくいったかどうか次の文で確認します。

SELECT * FROM entry;

次のように画面に表示され、テーブルが空であることがわかります。

Empty set (0.00 sec)

空になったテーブルentryにデータファイルからデータを取り込んでみましょう。

まずメモ帳などのテキストエディタを起動し、次のデータをコピーして貼り付けます。ファイル名はwcup2006.datとしてHドライブに保存しておきましょう。

グループ,国名,国旗のファイル名
A,ドイツ,ger_tn.png
A,コスタリカ,crc_tn.png
A,ポーランド,pol_tn.png
A,エクアドル,ecu_tn.png

もう一つメモ帳などのテキストエディタを起動し、次のプログラムをコピーして貼り付けます。ファイル名はwcup2006_import1.sqlとしてHドライブに保存しておきましょう。

LOAD DATA INFILE 'h:\\wcup2006.dat' REPLACE INTO TABLE entry
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
IGNORE 1 LINES
(wgroup, country, flag);

・LOAD DATA INFILEでデータファイルを読み込みます。次の’’で囲んだ部分でファイルのある場所を指定しています。ファイルやフォルダの区切りには¥¥を使用しています。
・REPLACE INTO TABLEでデータを読み込むテーブルを指定しています。
・FIELDS TERMINATED BYの次の’’で囲んだ部分でデータの区切りを指定します。
・LINES TERMINATED BYの次の’’で囲んだ部分で改行記号を指定しています。
・IGNORE 1 LINESはデータファイルの先頭の1行を無視せよという命令です。実際にデータファイルの先頭の1行は以下のデータの説明なので必要ありません。
・最後に( )で囲んだ部分にはテーブルentryのフィールドを指定し、区切りによって分けられたデータを格納しています。今のところ区切りによって分けられたデータがテーブルのフィールドの数と一致するようにして考えていきます。特別な場合については参考書などを参考にして勉強してください。
・最後に;で終わりこのSQL文は終わります。

このプログラムを試すために、次のSQL文を使用します。

source  h:\wcup2006_import1.sql

うまくいくと次のような表示が返されます。

Query OK, 4 rows affected (0.10 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0

うまくいったかどうか次の文で確認します。

SELECT * FROM entry;

次のように表に4件のレコードが入ったことがわかります。

+--------+------------+------------+
| wgroup | country    | flag       |
+--------+------------+------------+
| A      | ドイツ     | ger_tn.png |
| A      | コスタリカ | crc_tn.png |
| A      | ポーランド | pol_tn.png |
| A      | エクアドル | ecu_tn.png |
+--------+------------+------------+
4 rows in set (0.00 sec)

練習1.テーブルentryに残りの組のデータを追加しなさい。この場合、B組からH組のデータをファイルとして用意しておきます。このファイルを先ほどのプログラムのファイルwcup2006_import1.sqlを使って読み込めば追加されます。表が完成しているかどうか確認しなさい。