CREATE VIEW

概要

CREATE [ OR REPLACE ] VIEW view_name
[ SECURITY { DEFINER | INVOKER } ]
AS query

説明

SELECTクエリに対する新しいビューを作成します。ビューは、将来のクエリで参照できる論理的なテーブルです。ビューにはデータは含まれていません。代わりに、ビューによって格納されたクエリは、ビューが別のクエリによって参照されるたびに実行されます。

オプションのOR REPLACE句は、ビューが既に存在する場合はエラーを発生させるのではなく、ビューを置き換えます。

セキュリティ

デフォルトのDEFINERセキュリティモードでは、ビューで参照されるテーブルは、クエリを実行するユーザーではなく、ビューの所有者(ビューの作成者または定義者)の権限を使用してアクセスされます。これにより、クエリユーザーが直接アクセスすることを許可されていない可能性のある基になるテーブルへのアクセスを制限できます。current_user関数はビューの所有者ではなくクエリユーザーを返し、したがって行を除外したり、ビューにアクセスしているユーザーに基づいてアクセスを制限するために使用できます。

INVOKERセキュリティモードでは、ビューで参照されるテーブルは、クエリユーザー(ビューの呼び出し元)の権限を使用してアクセスされます。このモードで作成されたビューは、単なる保存されたクエリです。

default-view-security-modeを使用して、ビュー作成のデフォルトセキュリティモードを設定できます。

ordersテーブル上のシンプルなビューtestを作成する

CREATE VIEW test AS
SELECT orderkey, orderstatus, totalprice / 2 AS half
FROM orders

ordersを要約するビューorders_by_dateを作成する

CREATE VIEW orders_by_date AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate

既存のビューを置き換えるビューを作成する

CREATE OR REPLACE VIEW test AS
SELECT orderkey, orderstatus, totalprice / 4 AS quarter
FROM orders

デフォルトのビューセキュリティモードをINVOKERに設定する

SET SESSION default_view_security_mode='INVOKER'

参照

DROP VIEWSHOW CREATE VIEW