Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  INFORMATION_SCHEMA テーブル  /  INFORMATION_SCHEMA VIEWS テーブル

21.28 INFORMATION_SCHEMA VIEWS テーブル

VIEWS テーブルは、データベース内のビューに関する情報を提供します。このテーブルにアクセスするには SHOW VIEW 権限が必要です。

INFORMATION_SCHEMA SHOW 備考
TABLE_CATALOG   def
TABLE_SCHEMA    
TABLE_NAME    
VIEW_DEFINITION    
CHECK_OPTION    
IS_UPDATABLE    
DEFINER    
SECURITY_TYPE    
CHARACTER_SET_CLIENT   MySQL 拡張
COLLATION_CONNECTION   MySQL 拡張

:

  • VIEW_DEFINITION カラムには、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 カラムは、NONECASCADE、または LOCAL の値になります。

  • MySQL は、CREATE VIEW 時に、ビューの更新可能性フラグというフラグを設定します。UPDATE および DELETE (および同様の操作) がビューで有効な場合、フラグは YES (true) に設定されます。それ以外の場合、フラグは NO (false) に設定されます。VIEWS テーブルの IS_UPDATABLE カラムは、このフラグのステータスを表示します。これは、ビューが更新可能であるかどうかをサーバーが常に把握していることを意味します。ビューが更新可能ではない場合、UPDATEDELETEINSERT などのステートメントは無効であり、拒否されます。(ビューが更新可能な場合でも、挿入できない場合があります。詳細は、セクション13.1.20「CREATE VIEW 構文」を参照してください。)

  • DEFINER: 'user_name'@'host_name' 形式で示した、ビューを作成したユーザーのアカウントです。SECURITY_TYPE には、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 の前にあるコメントが、サーバーによって定義から取り除かれるというその他の影響があります。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.