ビューを使えば複数のテーブルを結合したり、抽出条件が複雑なSELECT文でも、まるで1つのテーブルのように扱うことができます。
一度ビューを作成してしまえば、普通のテーブルと同じように利用できます。言葉で説明すると難しそうですが、試してみるとすぐにメリットを実感できます。
【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文を入力し、T07Slip テーブルのデータを確認します。
SELECT * FROM T07Slip;
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;
*SQL文が長いのでコピー・ペーストしてください。
*SQL文の意味については Access SQL初心者入門講座 で詳しく解説しています。
【5】テーブルが結合したデータが表示されました。
「;」のかわりに「\G」を使うとレコードが縦に表示されます。
縦に表示した場合
しかし毎回こんな長い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;
*先頭に「CREATE VIEW V01Slip AS」が付くだけです。
【7】メッセージが表示され、ビューが作成されました。
ここまでの手順では便利になった感じがしませんが、ビューを使うとデータを簡単に表示できます。
【8】以下のSQL文を入力し、「Enterキー」を押します。
SELECT * FROM V01Slip;
【9】テーブルが結合したデータが表示されました。
どうですか?最初に入力したSQL文に比べて、表示がものすごく簡単になったのではないでしょうか。一度ビューを作成すると、普通のテーブルと同じように扱うことができるのです。
【10】以下のSQL文を入力し、ビューのフィールドを選択して表示してみましょう。
SELECT SLIP_CD, SLIP_DATE, CST_CD, CST_NAME FROM V01Slip;
【11】以下のSQL文を入力し、ビューのレコードを抽出してみましょう。
SELECT * FROM V01Slip WHERE CST_NAME LIKE '%田%';
名前に「田」が含まれる顧客を抽出しました。普通のテーブルとまったく変わらずに扱えます。
次はビューの管理についてです。まずどんなビューが作成されているか確認します。
【12】以下のSQL文を入力し、「Enterキー」を押します。
SELECT * FROM information_schema.VIEWS;
*データベースを選択していないので「データベース名.テーブル名」にしています。
少し見難いですが下のほうに、ビューを作成したデータベース、ビュー名、作成したときのSQL文が表示されています。
【13】ビューを削除するには以下のSQL文を入力し、「Enterキー」を押します。
DROP VIEW V01Slip;
*ビューを削除してもテーブルは削除されませんので安心してください。
【14】ビューが削除されたか確認してみましょう。以下のSQL文を入力し、「Enterキー」を押します。
SELECT * FROM information_schema.VIEWS;
空なのでビューは1つもありません。
【15】以下の図を参考にMySQLを終了・停止します。
1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。
【16】コマンドプロンプトは閉じてください。
【ワンポイント】
作成済みのビューを変更するには「ALTER」を使います。
ALTER VIEW V01Slip AS
新しいSELECT文;
いったんビューを削除してから作り直しても同じです。