スポンサードリンク



MySQL ビューを使ってレコードを表示する方法。

MySQLにはビュー(VIEW)という機能があります。ビューとは仮想のテーブルのようなものです。Accessではクエリに相当します。

ビューを使えば複数のテーブルを結合したり、抽出条件が複雑なSELECT文でも、まるで1つのテーブルのように扱うことができます。

一度ビューを作成してしまえば、普通のテーブルと同じように利用できます。言葉で説明すると難しそうですが、試してみるとすぐにメリットを実感できます。


【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文を入力し、T07Slip テーブルのデータを確認します。

SELECT * FROM T07Slip;

mysql-363.gif


T07Slip テーブルだけでは、顧客がどこの誰だかわかりませんよね。次は複数のテーブルを内部結合してデータを表示してみましょう。


【4】以下のSQL文を入力し、「Enterキー」を押します。


SELECT SLIP_CD, SLIP_DATE, T07Slip.CST_CD, CST_NAME, SEX,
CONCAT('〒', ZIP_CODE, ' ', PREF_NAME, CITY_NAME, TOWN_NAME, ADDRESS) AS ADDRESS2
FROM T07Slip,T04Customer,T05Sex,T03Town,T02City,T01Prefecture
WHERE T07Slip.CST_CD = T04Customer.CST_CD
AND T04Customer.SEX_CD = T05Sex.SEX_CD
AND T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD
AND T02City.PREF_CD = T01Prefecture.PREF_CD
ORDER BY T07Slip.SLIP_CD;


mysql-371.gif

*SQL文が長いのでコピー・ペーストしてください。
*SQL文の意味については Access SQL初心者入門講座 で詳しく解説しています。


【5】テーブルが結合したデータが表示されました。

mysql-372.gif

「;」のかわりに「\G」を使うとレコードが縦に表示されます。

mysql-373.gif

縦に表示した場合
mysql-374.gif


しかし毎回こんな長いSQL文を入力していては大変だしミスも出ます。そこでビューを作成してみることにします。


【6】以下のSQL文を入力し、「Enterキー」を押します。


CREATE VIEW V01Slip AS
SELECT SLIP_CD, SLIP_DATE, T07Slip.CST_CD, CST_NAME, SEX,
CONCAT('〒', ZIP_CODE, ' ', PREF_NAME, CITY_NAME, TOWN_NAME, ADDRESS) AS ADDRESS2
FROM T07Slip,T04Customer,T05Sex,T03Town,T02City,T01Prefecture
WHERE T07Slip.CST_CD = T04Customer.CST_CD
AND T04Customer.SEX_CD = T05Sex.SEX_CD
AND T04Customer.TOWN_CD = T03Town.TOWN_CD
AND T03Town.CITY_CD = T02City.CITY_CD
AND T02City.PREF_CD = T01Prefecture.PREF_CD
ORDER BY T07Slip.SLIP_CD;


mysql-375.gif

*先頭に「CREATE VIEW V01Slip AS」が付くだけです。


【7】メッセージが表示され、ビューが作成されました。

mysql-376.gif


ここまでの手順では便利になった感じがしませんが、ビューを使うとデータを簡単に表示できます。

【8】以下のSQL文を入力し、「Enterキー」を押します。

SELECT * FROM V01Slip;

mysql-377.gif


【9】テーブルが結合したデータが表示されました。

mysql-378.gif

どうですか?最初に入力したSQL文に比べて、表示がものすごく簡単になったのではないでしょうか。一度ビューを作成すると、普通のテーブルと同じように扱うことができるのです。


【10】以下のSQL文を入力し、ビューのフィールドを選択して表示してみましょう。

SELECT SLIP_CD, SLIP_DATE, CST_CD, CST_NAME FROM V01Slip;

mysql-383.gif


【11】以下のSQL文を入力し、ビューのレコードを抽出してみましょう。

SELECT * FROM V01Slip WHERE CST_NAME LIKE '%田%';

mysql-379.gif

名前に「田」が含まれる顧客を抽出しました。普通のテーブルとまったく変わらずに扱えます。


次はビューの管理についてです。まずどんなビューが作成されているか確認します。

【12】以下のSQL文を入力し、「Enterキー」を押します。

SELECT * FROM information_schema.VIEWS;
*データベースを選択していないので「データベース名.テーブル名」にしています。

mysql-380.gif

少し見難いですが下のほうに、ビューを作成したデータベース、ビュー名、作成したときのSQL文が表示されています。


【13】ビューを削除するには以下のSQL文を入力し、「Enterキー」を押します。

DROP VIEW V01Slip;

mysql-381.gif

*ビューを削除してもテーブルは削除されませんので安心してください。


【14】ビューが削除されたか確認してみましょう。以下のSQL文を入力し、「Enterキー」を押します。

SELECT * FROM information_schema.VIEWS;

mysql-382.gif

空なのでビューは1つもありません。


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

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

mysql-87.gif


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


【ワンポイント】
作成済みのビューを変更するには「ALTER」を使います。

ALTER VIEW V01Slip AS
新しいSELECT文;

いったんビューを削除してから作り直しても同じです。


スポンサードリンク






MySQL初心者入門講座TOPへ