SHOW CREATE VIEW view_name
このステートメントは、与えられたビューを作成する
CREATE VIEW
ステートメントを表示します。
mysql> SHOW CREATE VIEW v\G
*************************** 1. row ***************************
View: v
Create View: CREATE ALGORITHM=UNDEFINED
DEFINER=`bob`@`localhost`
SQL SECURITY DEFINER VIEW
`v` AS select 1 AS `a`,2 AS `b`
character_set_client: latin1
collation_connection: latin1_swedish_ci
character_set_client
は、このビューが作成されたときの
character_set_client
システム変数のセッション値です。collation_connection
は、このビューが作成されたときの
collation_connection
システム変数のセッション値です。これらのカラムは、MySQL
5.1.21 で追加されました。
SHOW CREATE
VIEW
の利用は、問題になっているビューに
SHOW VIEW
権限と
SELECT
権限を必要とします。
VIEWS
テーブルを含む
INFORMATION_SCHEMA
から、ビューオブジェクトに関する情報を得ることができます。The INFORMATION_SCHEMA VIEWS
Table
を参照してください。
MySQL では、異なる
sql_mode
設定を使用して、サポートする SQL
構文のタイプをサーバーに指示することができます。たとえば、ANSI
の SQL
モードを使用して、クエリー内にある標準 SQL
連結演算子の二重バー
(||
) が MySQL
で正しく解釈されるようにすることができます。その後、項目を連結するビューを作成した場合、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.01 sec) mysql>SHOW CREATE VIEW test.v\G
*************************** 1. row *************************** View: v Create View: CREATE VIEW "v" AS select concat('a','b') AS "col1" ... 1 row in set (0.00 sec)
ビュー定義を正規の形式で格納する利点は、あとで
sql_mode
の値を変更しても、ビューからの結果に影響を与えないことにあります。ただし、SELECT
の前にあるコメントが、サーバーによって定義から取り除かれるというその他の影響があります。