MySQLにおけるビュー【View】は、その名の通り見るためのテーブルです。

実際のテーブルに対するクエリの結果を表現するための仮想的なテーブルです。ビューを使用すると、データベース内の複数のテーブルから情報を結合して取得したり、特定の条件に基づいてデータをフィルタリングした結果をテーブルとして保持できます。ビューはクエリの結果を格納するのではなく、クエリが実行されるたびに結果が生成されます。

ビューは以下のような利点があります。

  1. 複雑なクエリをビューに組み立てることで、そのビューを単一のテーブルのように使用できます。複雑な結合や集計操作をビューにすることで、クエリを簡素化し、可読性を向上させることができます。
  2. ビューを使用すると、ユーザーがデータベース内の複数のテーブルに直接アクセスする必要がなくなります。代わりに、ビューを通じて必要な情報にアクセスすることができます。データのセキュリティとアクセス制御を強化できます。
  3. ビューは、データの特定の部分を抽出したり、不要な情報をフィルタリングしたりするために使用できます。必要な情報に簡単にアクセスできるようになります。

ビューの作成は、以下のようなSQL文を使用します:

書式

CREATE VIEW view_name AS
SELECT column1, column2, …
FROM table_name
WHERE condition;

view_nameは作成するビューの名前です。column1, column2, ...はビューに含めるカラムのリストです。table_nameはビューを作成するために使用するテーブルの名前です。conditionはオプションで、ビューのフィルタリング条件を指定します。

当社の新人エンジニア研修で使用しているスキーマを例に取れば以下のようになります。このViewはいわば売上速報のようなもので、誰がどの車を買ったのかを最新のものから順に表示します。

CREATE 
VIEW `sip`.`sales_bulletin` AS
    SELECT 
        `sip`.`sales`.`sale_id` AS `sale_id`,
        `sip`.`cars`.`car_id` AS `car_id`,
        `sip`.`customers`.`customer_id` AS `customer_id`,
        `sip`.`customers`.`name` AS `customer_name`,
        `sip`.`cars`.`name` AS `car_name`,
        `sip`.`cars`.`price` AS `price`,
        `sip`.`sales`.`saleDateTime` AS `saleDateTime`
    FROM
        ((`sip`.`cars`
        JOIN `sip`.`sales` ON ((`sip`.`cars`.`car_id` = `sip`.`sales`.`car_id`)))
        JOIN `sip`.`customers` ON ((`sip`.`sales`.`customer_id` = `sip`.`customers`.`customer_id`)))
    ORDER BY `sip`.`sales`.`sale_id` DESC

ビューを使用するには、単純にビューの名前をクエリの中でテーブルのように参照します。ビューは実行時にクエリを実行し、その結果を返します。

書式

SELECT * FROM view_name;

例えば以下のように使うことができます。

SELECT * FROM sip.sales_bulletin;

以上。

最後までお読みいただきありがとうございます。