VIEWS
テーブルは、データベース内のビューに関する情報を提供します。 このテーブルにアクセスするには SHOW VIEW
権限が必要です。
VIEWS
テーブルには、次のカラムがあります:
-
TABLE_CATALOG
ビューが属するカタログの名前。 この値は常に
def
です。 -
TABLE_SCHEMA
ビューが属するスキーマ (データベース) の名前。
-
TABLE_NAME
ビューの名前。
-
VIEW_DEFINITION
ビューの定義を提供する
SELECT
ステートメント。 このカラムには、SHOW CREATE VIEW
によって生成されるCreate Table
カラムに表示されるもののほとんどが含まれます。SELECT
より前の語をスキップし、WITH CHECK OPTION
の語をスキップします。 元のステートメントが次のとおりだったとします。CREATE VIEW v AS SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION;
この場合、ビュー定義は次のようになります。
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
-
CHECK_OPTION
CHECK_OPTION
属性の値。 値は、NONE
、CASCADE
またはLOCAL
のいずれかです。 -
IS_UPDATABLE
MySQL は、
CREATE VIEW
時に、ビューの更新可能性フラグというフラグを設定します。UPDATE
およびDELETE
(および同様の操作) がビューで有効な場合、フラグはYES
(true) に設定されます。 それ以外の場合、フラグはNO
(false) に設定されます。VIEWS
テーブルのIS_UPDATABLE
カラムは、このフラグのステータスを表示します。 これは、ビューが更新可能であるかどうかをサーバーが常に把握していることを意味します。ビューが更新可能でない場合、
UPDATE
、DELETE
およびINSERT
などのステートメントは無効であり、拒否されます。 (ビューが更新可能な場合でも、ビューに挿入できない場合があります。詳細は、セクション25.5.3「更新可能および挿入可能なビュー」 を参照してください。) -
DEFINER
ビューを作成したユーザーのアカウント (
'
形式)。user_name
'@'host_name
' -
SECURITY_TYPE
ビューの
SQL SECURITY
特性。 値は、DEFINER
またはINVOKER
のいずれかです。 -
CHARACTER_SET_CLIENT
ビュー作成時の
character_set_client
システム変数のセッション値。 -
COLLATION_CONNECTION
ビュー作成時の
collation_connection
システム変数のセッション値。
メモ
MySQL では、様々な sql_mode
設定を使用して、サポートする SQL 構文のタイプをサーバーに通知できます。 たとえば、ANSI
SQL モードを使用すると、クエリーで、MySQL で標準 SQL 連結演算子の二重バー (||
) が正しく解釈されます。 その後、項目を連結するビューを作成した場合、sql_mode
設定を ANSI
とは別の値に変更すると、そのビューが無効になるという懸念がある場合があります。 ただし、そのようなことはありません。 MySQL は、記述方法には関係なく、常にビュー定義を正規の形式で同じ方法で格納します。 サーバーが二重バーの連結演算子を CONCAT()
関数にどのように変更するかを示す例を次に示します。
mysql> SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+
| VIEW_DEFINITION |
+----------------------------------+
| select concat('a','b') AS `col1` |
+----------------------------------+
1 row in set (0.00 sec)
ビュー定義を正規の形式で格納する利点は、後で sql_mode
の値を変更してもビューの結果に影響しないことです。 ただし、追加の結果として、SELECT
より前のコメントはサーバーによって定義から削除されます。