MySQLにおけるビュー【View】は、その名の通り見るためのテーブルです。
実際のテーブルに対するクエリの結果を表現するための仮想的なテーブルです。ビューを使用すると、データベース内の複数のテーブルから情報を結合して取得したり、特定の条件に基づいてデータをフィルタリングした結果をテーブルとして保持できます。ビューはクエリの結果を格納するのではなく、クエリが実行されるたびに結果が生成されます。
ビューは以下のような利点があります。
- 複雑なクエリをビューに組み立てることで、そのビューを単一のテーブルのように使用できます。複雑な結合や集計操作をビューにすることで、クエリを簡素化し、可読性を向上させることができます。
- ビューを使用すると、ユーザーがデータベース内の複数のテーブルに直接アクセスする必要がなくなります。代わりに、ビューを通じて必要な情報にアクセスすることができます。データのセキュリティとアクセス制御を強化できます。
- ビューは、データの特定の部分を抽出したり、不要な情報をフィルタリングしたりするために使用できます。必要な情報に簡単にアクセスできるようになります。
ビューの作成は、以下のような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;
以上。