的观点
テーブルは,データベース内のビューに関する情報を提供します。このテーブルにアクセスするには显示视图
権限が必要です。
INFORMATION_SCHEMA 名 |
显示 名 |
備考 |
---|---|---|
TABLE_CATALOG |
def |
|
TABLE_SCHEMA |
||
TABLE_NAME |
||
VIEW_DEFINITION |
||
CHECK_OPTION |
||
IS_UPDATABLE |
||
定义者 |
||
SECURITY_TYPE |
||
CHARACTER_SET_CLIENT |
MySQL拡張 | |
COLLATION_CONNECTION |
MySQL拡張 |
注:
VIEW_DEFINITION
カラムには,显示创建视图
が生成する创建表
フィールドに表示されるほとんどのものが存在します。选择
より前の語をスキップし,检查选项
の語をスキップします。元のステートメントが次のとおりだったとします。创建视图v:从t中选择s2,s1,其中s1的>顺序为s1,并带有检查选项;
この場合,ビュー定義は次のようになります。
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
CHECK_OPTION
カラムは,没有一个
、级联
,または当地的
の値になります。MySQLは,
创建视图
時に,ビューの更新可能性フラグというフラグを設定します。更新
および删除
(および同様の操作)がビューで有効な場合,フラグは是的
(正确)に設定されます。それ以外の場合,フラグは没有
(错误)に設定されます。的观点
テーブルのIS_UPDATABLE
カラムは,このフラグのステータスを表示します。これは,ビューが更新可能であるかどうかをサーバーが常に把握していることを意味します。ビューが更新可能ではない場合,更新
、删除
、插入
などのステートメントは無効であり,拒否されます。(ビューが更新可能な場合でも,挿入できない場合があります。詳細は,セクション13.1.20创建视图構文を参照してください.)定义者
:'
形式で示した,ビューを作成したユーザーのアカウントです。user_name
“@”host_name
'SECURITY_TYPE
には,定义者
または调用程序
の値があります。CHARACTER_SET_CLIENT
:ビューが作成されたときのcharacter_set_client
システム変数のセッション値です。COLLATION_CONNECTION
:ビューが作成されたときのcollation_connection
システム変数のセッション値です。
MySQLでは,異なるsql_mode
設定を使用すると,サポートするSQL構文のタイプをサーバーに指示できます。たとえば,ANSI
SQLモードを使用すると,クエリーで,MySQLで標準||
)が正しく解釈されます。その後,項目を連結するビューを作成した場合,sql_mode
設定をANSI
とは別の値に変更すると,そのビューが無効になるという懸念がある場合があります。ただし,そのようなことはありません。MySQLは,記述方法には関係なく、常にビュー定義を正規の形式で同じ方法で格納します。サーバーが二重バーの連結演算子をCONCAT ()
関数にどのように変更するかを示す例を次に示します。
设置sql_mode = 'ANSI';mysql>创建VIEW test。SELECT 'a' | ' | 'b' AS col1;SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA视图-> WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';+----------------------------------+ | VIEW_DEFINITION | +----------------------------------+ | 选择concat (a, b)的col1 ` | +----------------------------------+ 1行集(0.00秒)
ビュー定義を正規の形式で格納する利点は,あとでsql_mode
の値を変更しても,ビューの結果に影響を与えないことにあります。ただし,选择
の前にあるコメントが,サーバーによって定義から取り除かれるというその他の影響があります。