SHOW とINFORMATION_SCHEMAがどのような違いがあるのか
疑問に思ったので、少し調べてみます。 

━━━━━━ 抜粋 ━━━━━━
SHOW は、データベース、テーブル、カラム、またサーバのステータス情報
などのような様々な情報を提供する多くの形を持っています。

mysql> SHOW BINARY LOGS;
+——————+———–+
| Log_name | File_size |
+——————+———–+
| mysql-bin.000001 | 125 |
| mysql-bin.000002 | 125 |
| mysql-bin.000003 | 220235904 |
| mysql-bin.000004 | 125 |
| mysql-bin.000005 | 683459 |
| mysql-bin.000006 | 480901 |
| mysql-bin.000007 | 218700 |
| mysql-bin.000008 | 2028338 |
| mysql-bin.000009 | 12987 |
| mysql-bin.000010 | 3425 |
| mysql-bin.000011 | 26573 |
| mysql-bin.000012 | 6140472 |
| mysql-bin.000013 | 286 |
| mysql-bin.000014 | 3055543 |
+——————+———–+
14 rows in set (0.00 sec)

mysql>

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

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

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

1) それは Codd の規則に合致していることです。つまり、すべてのアクセスはテーブルで行われます。
2) 新しいステートメント構文を学ぶ必要はありません。なぜなら既にSELECT の機能を理解されており、
オブジェクト名を知るだけでいいからです。
3) インプリメンターはキーワードを加える心配する必要がありません。
たった 1 つの出力に代わり、可能な出力は無数にあります。これによりメタデータ
に対する多様な要件を持つアプリケーションにさらに軟性を提供します。
すべての他の DBMS が同じ手法を用いていますので移行は容易です。

SHOW は ユーザーに評判がよく、また無くなったら混乱することが考えられ
たため、従来の構文の利点だけでは SHOW を無くすのに十分な理由とは
いえません。実際のところ、INFORMATION_SCHEMA を実装することに
よって、SHOW もまた同様に強化されます。

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

mysql> SHOW TABLES FROM INFORMATION_SCHEMA;
+—————————————+
| Tables_in_INFORMATION_SCHEMA |
+—————————————+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_COLUMN_USAGE |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| PROFILING |
| REFERENTIAL_CONSTRAINTS |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| SESSION_STATUS |
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+—————————————+
28 rows in set (0.01 sec)

mysql>

Comments are closed.

Post Navigation