無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 21 INFORMATION_SCHEMA データベース
« 20.3 DROP VIEW 構文

21.1 INFORMATION_SCHEMA SCHEMATA テーブル »
Section Navigation      [Toggle]
  • はじめに
  • 1 一般情報
  • 2 MySQL のインストールと更新
  • 3 MySQL プログラムの使用
  • 4 データベース管理
  • 5 レプリケーション
  • 6 最適化
  • 7 クライアントプログラムとユーティリティ プログラム
  • 8 言語構造
  • 9 キャラクタセットサポート
  • 10 データタイプ
  • 11 関数と演算子
  • 12 SQL ステートメント構文
  • 13 ストレージエンジンとテーブルタイプ
  • 14 MySQL Cluster
  • 15 パーティショニング
  • 16 Spatial Extensions
  • 17 ストアドプロシージャとファンクション
  • 18 トリガ
  • 19 Event Scheduler
  • 20 ビュー
  • 21 INFORMATION_SCHEMA データベース
    • 21.1 INFORMATION_SCHEMA SCHEMATA テーブル
    • 21.2 INFORMATION_SCHEMA TABLES テーブル
    • 21.3 INFORMATION_SCHEMA COLUMNS テーブル
    • 21.4 INFORMATION_SCHEMA STATISTICS テーブル
    • 21.5 INFORMATION_SCHEMA USER_PRIVILEGES テーブル
    • 21.6 INFORMATION_SCHEMA SCHEMA_PRIVILEGES テーブル
    • 21.7 INFORMATION_SCHEMA TABLE_PRIVILEGES テーブル
    • 21.8 INFORMATION_SCHEMA COLUMN_PRIVILEGES テーブル
    • 21.9 INFORMATION_SCHEMA CHARACTER_SETS テーブル
    • 21.10 INFORMATION_SCHEMA COLLATIONS テーブル
    • 21.11 INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY テーブル
    • 21.12 INFORMATION_SCHEMA TABLE_CONSTRAINTS テーブル
    • 21.13 INFORMATION_SCHEMA KEY_COLUMN_USAGE テーブル
    • 21.14 INFORMATION_SCHEMA ROUTINES テーブル
    • 21.15 INFORMATION_SCHEMA VIEWS テーブル
    • 21.16 INFORMATION_SCHEMA TRIGGERS テーブル
    • 21.17 INFORMATION_SCHEMA PLUGINS テーブル
    • 21.18 INFORMATION_SCHEMA ENGINES テーブル
    • 21.19 INFORMATION_SCHEMA PARTITIONS テーブル
    • 21.20 INFORMATION_SCHEMA EVENTS テーブル
    • 21.21 INFORMATION_SCHEMA FILES テーブル
    • 21.22 INFORMATION_SCHEMA PROCESSLIST テーブル
    • 21.23 INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS テーブル
    • 21.24 INFORMATION_SCHEMA GLOBAL_STATUS および SESSION_STATUS テーブル
    • 21.25 INFORMATION_SCHEMA GLOBAL_VARIABLES および SESSION_VARIABLES テーブル
    • 21.26 その他の INFORMATION_SCHEMA テーブル
    • 21.27 SHOW ステートメントへの拡張
  • 22 精密計算
  • 23 APIとライブラリー
  • 24 MySQL コネクタ
  • 25 Extending MySQL
  • A Frequently Asked Questions About MySQL 5.1
  • B Errors, Error Codes, and Common Problems
  • C MySQL Change History
  • D 制限と規制
  • E Credits
  • 目次

第21章 INFORMATION_SCHEMA データベース

目次

21.1. INFORMATION_SCHEMA SCHEMATA テーブル
21.2. INFORMATION_SCHEMA TABLES テーブル
21.3. INFORMATION_SCHEMA COLUMNS テーブル
21.4. INFORMATION_SCHEMA STATISTICS テーブル
21.5. INFORMATION_SCHEMA USER_PRIVILEGES テーブル
21.6. INFORMATION_SCHEMA SCHEMA_PRIVILEGES テーブル
21.7. INFORMATION_SCHEMA TABLE_PRIVILEGES テーブル
21.8. INFORMATION_SCHEMA COLUMN_PRIVILEGES テーブル
21.9. INFORMATION_SCHEMA CHARACTER_SETS テーブル
21.10. INFORMATION_SCHEMA COLLATIONS テーブル
21.11. INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY テーブル
21.12. INFORMATION_SCHEMA TABLE_CONSTRAINTS テーブル
21.13. INFORMATION_SCHEMA KEY_COLUMN_USAGE テーブル
21.14. INFORMATION_SCHEMA ROUTINES テーブル
21.15. INFORMATION_SCHEMA VIEWS テーブル
21.16. INFORMATION_SCHEMA TRIGGERS テーブル
21.17. INFORMATION_SCHEMA PLUGINS テーブル
21.18. INFORMATION_SCHEMA ENGINES テーブル
21.19. INFORMATION_SCHEMA PARTITIONS テーブル
21.20. INFORMATION_SCHEMA EVENTS テーブル
21.21. INFORMATION_SCHEMA FILES テーブル
21.22. INFORMATION_SCHEMA PROCESSLIST テーブル
21.23. INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS テーブル
21.24. INFORMATION_SCHEMA GLOBAL_STATUS および SESSION_STATUS テーブル
21.25. INFORMATION_SCHEMA GLOBAL_VARIABLES および SESSION_VARIABLES テーブル
21.26. その他の INFORMATION_SCHEMA テーブル
21.27. SHOW ステートメントへの拡張

INFORMATION_SCHEMA はデータベース メタデータへのアクセスを提供します。

メタデータ は、データベース名またはテーブル名、カラムのデータタイプ、あるいはアクセス権限などのデータに関するデータです。この情報に時々使用される他の用語にはデータ ディクショナリおよびシステム カタログがあります。

INFORMATION_SCHEMA は情報のデータベースで、MySQL サーバーが保持する他のすべてのデータベースに関する情報を保存しています。INFORMATION_SCHEMA の中にはいくつかの読み出し専用テーブルがあります。それらは実際はベーステーブルではなく表示ですので、それらに関連付けされたファイルはありません。

実際には INFORMATION_SCHEMA という名前のデータベースがありますが、その名前ではサーバーはデータベース ディレクトリを作成しません。INFORMATION_SCHEMA を USE ステートメントでデフォルトのデータベースとして選択できますが、それはテーブルのコンテンツを読むことしかできません。挿入、更新、および削除はできません。

ここに INFORMATION_SCHEMA から情報を取り出すステートメントの例を示します。

mysql> SELECT table_name, table_type, engine
    -> FROM information_schema.tables
    -> WHERE table_schema = 'db5'
    -> ORDER BY table_name DESC;
+------------+------------+--------+
| table_name | table_type | engine |
+------------+------------+--------+
| v56        | VIEW       | NULL   |
| v3         | VIEW       | NULL   |
| v2         | VIEW       | NULL   |
| v          | VIEW       | NULL   |
| tables     | BASE TABLE | MyISAM |
| t7         | BASE TABLE | MyISAM |
| t3         | BASE TABLE | MyISAM |
| t2         | BASE TABLE | MyISAM |
| t          | BASE TABLE | MyISAM |
| pk         | BASE TABLE | InnoDB |
| loop       | BASE TABLE | MyISAM |
| kurs       | BASE TABLE | MyISAM |
| k          | BASE TABLE | MyISAM |
| into       | BASE TABLE | MyISAM |
| goto       | BASE TABLE | MyISAM |
| fk2        | BASE TABLE | InnoDB |
| fk         | BASE TABLE | InnoDB |
+------------+------------+--------+
17 rows in set (0.01 sec)

説明:ステートメントはデータベース db5 内のすべてのテーブルのリストを要求し、アルファベットの逆の順序で、次の 3 項目の情報を表示します。テーブル名、テーブルタイプ、およびそのストレージ エンジン。

各 MySQL ユーザーはこれらのテーブルへのアクセス権限がありますが、ユーザーが適切なアクセス権限を持つオブジェクトに一致するテーブルの行のみ表示することができます。しかし、場合によっては (例えば、INFOMATION_SCHEMA.ROUTINES テーブルの ROUTINE_DEFINITION カラム)、不十分な権限を有するユーザーには NULL が表示される場合があります。

SELECT ...FROM INFORMATION_SCHEMA ステートメントは様々なSHOW ステートメント、つまり MySQL がサポートする ( SHOW DATABASES、SHOW TABLES、など により提供された情報へのアクセスをさらに一貫した手法を意図したものです。SELECT は、 SHOW に比べて有利な点が 3 つあります。

  • それは Codd の規則に合致していることです。つまり、すべてのアクセスはテーブルで行われます。

  • 新しいステートメント構文を学ぶ必要はありません。なぜなら既にSELECT の機能を理解されており、オブジェクト名を知るだけでいいからです。

  • インプリメンターはキーワードを加える心配する必要がありません。

  • たった 1 つの出力に代わり、可能な出力は無数にあります。これによりメタデータに対する多様な要件を持つアプリケーションにさらに軟性を提供します。

  • すべての他の DBMS が同じ手法を用いていますので移行は容易です。

しかし、SHOW は MySQL の従業員やユーザーに評判がよく、また無くなったら混乱することが考えられれため、従来の構文の利点だけでは SHOW を無くすのに十分な理由とはいえません。実際のところ、INFORMATION_SCHEMA を実装することによって、SHOW もまた同様に強化されます。これらのことは 項21.27. 「SHOW ステートメントへの拡張」 で説明しています。

SHOW ステートメントに必要な権限と INFORMATION_SCHEMA から情報を選択する権限の間には違いはありません。どちらの場合でも、オブジェクトに関する情報を表示するにはいくつかの権限を有する必要があります。

MySQL での INFORMATION_SCHEMA テーブル構成のインプリメンテーションは ANSI/ISO SQL:2003 標準 パート 11 の Schemata に準拠しています。SQL:2003 コア機能 F021 基本情報スキーマに最大限準拠することを意図しています。

SQL サーバ 2000 (標準に準拠) のユーザーは非常に近い類似性を認める事でしょう。しかし、MySQL ではインプリメンテーションに関連しない多くのカラムを割愛し、MySQL 特化のカラムを追加しています。それらの追加されたカラムの 1 つが ENGINE カラムで INFORMATION_SCHEMA.TABLES テーブルにあります。

他の DBMS は syscat あるいはシステムなどの様々な名前を使用していますが、標準の名前は INFORMATION_SCHEMA です。

以下の項で INFORMATION_SCHEMA の各テーブルおよびカラムについて説明します。各カラムに対し、3 項目の情報があります。

  • 「INFORMATION_SCHEMA 名」は INFORMATION_SCHEMA テーブルのカラム名を意味します。これは「備考」欄で 「MySQL 拡張」に触れない限り標準の SQL 名に一致します。

  • 「「SHOW 名」 」は SHOW 名がある場合に近接する SHOW ステートメントの相当するフィールド名を意味します。

  • 「備考」は必要に応じて追加の情報を提供します。この領域が NULL の場合、カラムの値は常に NULL をであることを意味します。この領域に 「MySQL 拡張」 の事が書かれている場合、そのカラムは標準の SQL に対する MySQL 拡張です。

標準あるいは DB2、SQL サーバ、または Oracle に保持されている名前の使用しないように、 「MySQL 拡張」 の印の付いたカラムの名前を変更しています。(例えば、TABLES のテーブルでは COLLATION を TABLE_COLLATION に変更しています。)本件の最後にある予約した単語のリストを参照してください。 http://www.dbazine.com/gulutzan5.shtml.

文字列の定義 (例えば、TABLES.TABLE_NAME) は一般的には VARCHAR(N) CHARACTER SET utf8 で、そこでは N は少なくとも 64 です。MySQL はこの文字セット (utf8_general_ci) をそのようなカラムのすべての検索、分類、比較、および他の文字列の操作に使用しています。デフォルトの照合がニーズを満たさない場合、COLLATE 節 (項9.5.1. 「SQLステートメントCOLLATE節を使用する」) で適切な照合を使用することができます。

各セクションはそのようなステートメントがある場合どの SHOW ステートメントが INFOMATION_SCHEMA から情報を取り出す SELECT に一致するかを示します。

注:現在、いくつかの不明なカラムおよび適切でないカラムがあります。現在この作業に携わっており変更があり次第変更を加えて文書を更新しています。

INFORMATION_SCHEMA データベースに関するよく出される質問の答えに関しては、 項A.8. 「MySQL 5.0 FAQ ? INFORMATION_SCHEMA」 を参照してください。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.