view(ビュー)とは
SQLによるSELECT文などで問い合わせを行うことで派生的に生成される仮想的な表
のこと。
表に対して複数の表を内部結合や外部結合で連結した表や
WITH句などの処理のためにシステム内に一時的に作成される表なども含まれる。
ビューは導出表
とも呼ばれる。
viewの作成
CREATE VIEW viewの名前 AS ビューの定義(SELECT hoge, fuga FROM テーブル名など)
動作検証
一つのテーブルからviewを作成
テーブルからいくつかのカラムを抽出してviewを作成してみる。
データは下記のsampleテーブルを使う。
viewの作成
CREATE VIEW view_sample AS SELECT id, name, point, type FROM sample;
作成したviewの確認
SELECT * FROM view_sample;
viewが作成されてSELECT文で参照できることが確認できた!
ちなみにviewの削除方法は...
DROP VIEW view_sample;
複数のテーブルからviewを作成
先ほどは1つのテーブルから作成したが、今度は複数のテーブルを結合したviewを作成する。
事前準備
テーブルを3つ用意する。
◆itemsテーブル
CREATE TABLE items (id int AUTO_INCREMENT, name varchar(50), price int, PRIMARY KEY(id);
INSERT INTO items (name, price) VALUES
('chocolate', 120),
('candy', 100),
('gum', 100),
('potato chips', 200),
('jelly', 170);
◆shopsテーブル
CREATE TABLE shops (id int AUTO_INCREMENT, name varchar(50), area varchar(50), PRIMARY KEY(id));
INSERT INTO shops (name, area) VALUES
('葛飾区', '東京都'),
('福岡市中央区', '福岡県'),
('上京区', '京都府'),
('札幌市', '北海道');
◆salesテーブル
CREATE TABLE sales (id int AUTO_INCREMENT, item_id int, shop_id int, soldItems int, PRIMARY KEY(id));
INSERT INTO sales (item_id, shop_id, soldItems)
VALUES
(1, 1, 5),
(1, 3, 2),
(2, 1, 1),
(2, 2, 2),
(2, 4, 3),
(3, 1, 1),
(3, 3, 2),
(3, 4, 2),
(4, 2, 6),
(4, 3, 2);
viewを作成
CREATE VIEW view_sales (
sales_id, item_name, item_price, shop_name,
shop_area
) AS (
SELECT
sa.id,
i.name,
i.price,
sh.name,
sh.area
FROM
sales sa
LEFT JOIN items i ON sa.item_id = i.id
LEFT JOIN shops sh ON sa.shop_id = sh.id
);