目次
INFORMATION_SCHEMA SCHEMATA
テーブルINFORMATION_SCHEMA TABLES
テーブルINFORMATION_SCHEMA COLUMNS
テーブルINFORMATION_SCHEMA STATISTICS
テーブルINFORMATION_SCHEMA USER_PRIVILEGES
テーブルINFORMATION_SCHEMA SCHEMA_PRIVILEGES
テーブルINFORMATION_SCHEMA TABLE_PRIVILEGES
テーブルINFORMATION_SCHEMA COLUMN_PRIVILEGES
テーブルINFORMATION_SCHEMA CHARACTER_SETS
テーブルINFORMATION_SCHEMA COLLATIONS
テーブルINFORMATION_SCHEMA
COLLATION_CHARACTER_SET_APPLICABILITY
テーブルINFORMATION_SCHEMA TABLE_CONSTRAINTS
テーブルINFORMATION_SCHEMA KEY_COLUMN_USAGE
テーブルINFORMATION_SCHEMA ROUTINES
テーブルINFORMATION_SCHEMA VIEWS
テーブルINFORMATION_SCHEMA TRIGGERS
テーブルINFORMATION_SCHEMA PLUGINS
テーブルINFORMATION_SCHEMA ENGINES
テーブルINFORMATION_SCHEMA PARTITIONS
テーブルINFORMATION_SCHEMA EVENTS
テーブルINFORMATION_SCHEMA FILES
テーブルINFORMATION_SCHEMA PROCESSLIST
テーブルINFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS
テーブルINFORMATION_SCHEMA GLOBAL_STATUS
および
SESSION_STATUS
テーブルINFORMATION_SCHEMA GLOBAL_VARIABLES
および
SESSION_VARIABLES
テーブルINFORMATION_SCHEMA
テーブル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 utf8N
は少なくとも 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
」
を参照してください。
スキーマはデータベースで、SCHEMATA
テーブルはデータベースに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
CATALOG_NAME | ? | NULL |
SCHEMA_NAME | ? | データベース |
DEFAULT_CHARACTER_SET_NAME | ? | ? |
DEFAULT_COLLATION_NAME | ? | ? |
SQL_PATH | ? | NULL |
以下のステートメントは等価です。
SELECT SCHEMA_NAME AS `Database` FROM INFORMATION_SCHEMA.SCHEMATA [WHERE SCHEMA_NAME LIKE 'wild
'] SHOW DATABASES [LIKE 'wild
']
TABLES
テーブルはデータベースのテーブルに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
TABLE_CATALOG | ? | NULL |
TABLE_SCHEMA | Table_ ... | ? |
TABLE_NAME | Table_ ... | ? |
TABLE_TYPE | ? | ? |
ENGINE | Engine | MySQL 拡張 |
VERSION | Version | MySQL 拡張 |
ROW_FORMAT | Row_format | MySQL 拡張 |
TABLE_ROWS | Rows | MySQL 拡張 |
AVG_ROW_LENGTH | Avg_row_length | MySQL 拡張 |
DATA_LENGTH | Data_length | MySQL 拡張 |
MAX_DATA_LENGTH | Max_data_length | MySQL 拡張 |
INDEX_LENGTH | Index_length | MySQL 拡張 |
DATA_FREE | Data_free | MySQL 拡張 |
AUTO_INCREMENT | Auto_increment | MySQL 拡張 |
CREATE_TIME | Create_time | MySQL 拡張 |
UPDATE_TIME | Update_time | MySQL 拡張 |
CHECK_TIME | Check_time | MySQL 拡張 |
TABLE_COLLATION | Collation | MySQL 拡張 |
CHECKSUM | Checksum | MySQL 拡張 |
CREATE_OPTIONS | Create_options | MySQL 拡張 |
TABLE_COMMENT | Comment | MySQL 拡張 |
注:
TABLE_SCHEMA
および
TABLE_NAME
は SHOW
ディスプレーの単一の領域で、例えばTable_in_db1
のようになります。
TABLE_TYPE
は BASE
TABLE
あるいは VIEW
になります。テーブルがテンポラリーの場合、TABLE_TYPE
= TEMPORARY
になります。(テンポラリーな表示はないため、不明瞭になることはありません。)
分割したテーブルの場合、MySQL 5.1.9
で始めると、ENGINE
カラムはすべての分割で使用されるストレージ
エンジン名を表示します。(以前は、このカラムはそのようなテーブルに
PARTITION
を表示していました。
TABLE_ROWS
カラムはテーブルが
INFORMATION_SCHEMA
のデータベースにある場合は
NULL
です。InnoDB
テーブルは、行カウントは SQL
の最適化で使用される単なる大雑把な予測です。
というのは、NDBCLUSTER
ストレージ
エンジンを使用しているテーブルは、MySQL
5.1.12 で始まり、DATA_LENGTH
カラムが可変幅カラムの真のストレージ量を表します。(Bug#18413 参照)
注:なぜなら MySQL クラスターは可変幅カラムにストレージを各 32Kバイトで 10 ページ割り当てるため、そのようなカラムのスペースの使用は 320 KB の増分になります。
テーブルのデフォルトの文字セットには何もありません。TABLE_COLLATION
は閉じています。なぜなら照合名は文字セット名で始まるからです。
MySQL 5.1.9
を起動すると、CREATE_OPTIONS
カラムはテーブルが分割されている場合
partitioned
を表示します。
以下のステートメントは等価です。
SELECT table_name FROM INFORMATION_SCHEMA.TABLES [WHERE table_schema = 'db_name
'] [WHERE|AND table_name LIKE 'wild
'] SHOW TABLES [FROMdb_name
] [LIKE 'wild
']
COLUMNS
テーブルはテーブルのカラムに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
TABLE_CATALOG | ? | NULL |
TABLE_SCHEMA | ? | ? |
TABLE_NAME | ? | ? |
COLUMN_NAME | Field | ? |
ORDINAL_POSITION | ? | 注を参照 |
COLUMN_DEFAULT | Default | ? |
IS_NULLABLE | Null | ? |
DATA_TYPE | Type | ? |
CHARACTER_MAXIMUM_LENGTH | Type | ? |
CHARACTER_OCTET_LENGTH | ? | ? |
NUMERIC_PRECISION | Type | ? |
NUMERIC_SCALE | Type | ? |
CHARACTER_SET_NAME | ? | ? |
COLLATION_NAME | Collation | ? |
COLUMN_TYPE | Type | MySQL 拡張 |
COLUMN_KEY | Key | MySQL 拡張 |
EXTRA | Extra | MySQL 拡張 |
COLUMN_COMMENT | Comment | MySQL 拡張 |
注:
SHOW
では、Type
表示は異なるいくつかの COLUMNS
カラムの値を含んでいます。
ORDINAL_POSITION
は ORDER BY
ORDINAL_POSITION
をいう場合があり場合がありますので必要です。SHOW
とは異なり、SELECT
には自動オーダーリングはありません。
CHARACTER_OCTET_LENGTH
は、マルチバイトの文字セットを除いては
CHARACTER_MAXIMUM_LENGTH
と同じでなければなりません。
CHARACTER_SET_NAME
は
Collation
から得られます。例えば、SHOW FULL COLUMNS
FROM t
という場合、
Collation
カラムに
latin1_swedish_ci
の値が表示されます。文字セットは最初のアンダースコアの前の部分、つまりlatin1
です。
以下のステートメントはほぼ等価です。
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_name
' [AND table_schema = 'db_name
'] [AND column_name LIKE 'wild
'] SHOW COLUMNS FROMtbl_name
[FROMdb_name
] [LIKE 'wild
']
STATISTICS
テーブルはテーブル
インデックスの情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
TABLE_CATALOG | ? | NULL |
TABLE_SCHEMA | ? | = データベース |
TABLE_NAME | Table | ? |
NON_UNIQUE | Non_unique | ? |
INDEX_SCHEMA | ? | = Database |
INDEX_NAME | Key_name | ? |
SEQ_IN_INDEX | Seq_in_index | ? |
COLUMN_NAME | Column_name | ? |
COLLATION | Collation | ? |
CARDINALITY | Cardinality | ? |
SUB_PART | Sub_part | MySQL 拡張 |
PACKED | Packed | MySQL 拡張 |
NULLABLE | Null | MySQL 拡張 |
INDEX_TYPE | Index_type | MySQL 拡張 |
COMMENT | Comment | MySQL 拡張 |
注:
インデックスには標準のテーブルはありません。前のリストは
SQL サーバ 2000 が sp_statistics
に返すものと、QUALIFIER
を
CATALOG
に、 OWNER
を
SCHEMA
に置き換えた事を除いては類似しています。
明らかに、前のテーブルおよび SHOW
INDEX
の出力は同じ親に由来しています。ですから相関関係は既に閉じています。
以下のステートメントは等価です。
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name = 'tbl_name
' [AND table_schema = 'db_name
'] SHOW INDEX FROMtbl_name
[FROMdb_name
]
USER_PRIVILEGES
テーブルはグルーバル権限に関する情報を提供します。この情報は
mysql.user
グラントテーブルにあります。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
GRANTEE | ? | '
値、MySQL 拡張 |
TABLE_CATALOG | ? | NULL , MySQL 拡張 |
PRIVILEGE_TYPE | ? | MySQL 拡張 |
IS_GRANTABLE | ? | MySQL 拡張 |
注:
これは非標準のテーブルです。その値は
mysql.user
のテーブルにあります。
SCHEMA_PRIVILEGES
テーブルはスキーマ(データベース)
権限に関する情報を提供します。この情報は
mysql.user
グラントテーブルにあります。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
GRANTEE | ? | '
値、MySQL 拡張 |
TABLE_CATALOG | ? | NULL , MySQL 拡張 |
TABLE_SCHEMA | ? | MySQL 拡張 |
PRIVILEGE_TYPE | ? | MySQL 拡張 |
IS_GRANTABLE | ? | MySQL 拡張 |
注:
これは非標準のテーブルです。その値は
mysql.db
テーブルにあります。
TABLE_PRIVILEGES
テーブルはテーブル権限に関する情報を提供します。この情報は
mysql.tables_priv
グラント
テーブルにあります。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
GRANTEE | ? | '
値 |
TABLE_CATALOG | ? | NULL |
TABLE_SCHEMA | ? | ? |
TABLE_NAME | ? | ? |
PRIVILEGE_TYPE | ? | ? |
IS_GRANTABLE | ? | ? |
注:
PRIVILEGE_TYPE
はこれらの値の 1
つ(1
つのみ)を含むことができます。SELECT
、INSERT
、UPDATE
、REFERENCES
、ALTER
、INDEX
、DROP
、CREATE
VIEW
。
以下のステートメントは等価ではありません。
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES SHOW GRANTS ...
COLUMN_PRIVILEGES
テーブルはカラムの権限に関する情報を提供します。この情報は
mysql.columns_priv
グラント
テーブルにあります。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
GRANTEE | ? | '
値 |
TABLE_CATALOG | ? | NULL |
TABLE_SCHEMA | ? | ? |
TABLE_NAME | ? | ? |
COLUMN_NAME | ? | ? |
PRIVILEGE_TYPE | ? | ? |
IS_GRANTABLE | ? | ? |
注:
SHOW FULL COLUMNS
の出力では、権限はすべて 1
つの領域にあり小文字です。例えば、select,insert,update,references
。COLUMN_PRIVILEGES
では、行ごとに 1
つの権限があり、大文字です。
PRIVILEGE_TYPE
はこれらの値の 1
つ(1
つのみ)を含むことができます。SELECT
、INSERT
、UPDATE
、REFERENCES
。
ユーザーに GRANT OPTION
の権限がある場合、IS_GRANTABLE
は
YES
になります。権限が無い場合、IS_GRANTABLE
は NO
になります。その出力は
GRANT OPTION
を個別の権限としてリストしません。
以下のステートメントは等価ではありません。
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES SHOW GRANTS ...
CHARACTER_SETS
テーブルは利用できる文字セットに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
CHARACTER_SET_NAME | Charset | ? |
DEFAULT_COLLATE_NAME | Default collation | ? |
DESCRIPTION | Description | MySQL 拡張 |
MAXLEN | Maxlen | MySQL 拡張 |
以下のステートメントは等価です。
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS [WHERE name LIKE 'wild
'] SHOW CHARACTER SET [LIKE 'wild
']
COLLATIONS
テーブルは各文字セットの照合に関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
COLLATION_NAME | Collation | ? |
CHARACTER_SET_NAME | Charset | MySQL 拡張 |
ID | Id | MySQL 拡張 |
IS_DEFAULT | Default | MySQL 拡張 |
IS_COMPILED | Compiled | MySQL 拡張 |
SORTLEN | Sortlen | MySQL 拡張 |
以下のステートメントは等価です。
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS [WHERE collation_name LIKE 'wild
'] SHOW COLLATION [LIKE 'wild
']
COLLATION_CHARACTER_SET_APPLICABILITY
テーブルはどの文字セットがどの照合に適用できるかを示します。カラムは
SHOW COLLATION
から取得する最初の 2
つの表示領域に等価です。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
COLLATION_NAME | Collation | ? |
CHARACTER_SET_NAME | Charset | ? |
TABLE_CONSTRAINTS
テーブルはどのテーブルに制約があるかを説明します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
CONSTRAINT_CATALOG | ? | NULL |
CONSTRAINT_SCHEMA | ? | ? |
CONSTRAINT_NAME | ? | ? |
TABLE_SCHEMA | ? | ? |
TABLE_NAME | ? | ? |
CONSTRAINT_TYPE | ? | ? |
注:
CONSTRAINT_TYPE
値は
UNIQUE
、PRIMARY
KEY
、あるいは FOREIGN KEY
になります。
UNIQUE
および PRIMARY
KEY
情報は Non_unique
領域が 0
のとき SHOW
INDEX
の出力の Key_name
領域から得られる情報とほぼ同じになります。
CONSTRAINT_TYPE
カラムはこれらの値のどれか 1
つを含みます。UNIQUE
、PRIMARY
KEY
、FOREIGN
KEY
、CHECK
。これは
CHAR
(非 ENUM
)
カラムです。CHECK
値は
CHECK
をサポートするまでは利用できません。
KEY_COLUMN_USAGE
テーブルはどのキーカラムがに制約があるかを説明します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
CONSTRAINT_CATALOG | ? | NULL |
CONSTRAINT_SCHEMA | ? | ? |
CONSTRAINT_NAME | ? | ? |
TABLE_CATALOG | ? | ? |
TABLE_SCHEMA | ? | ? |
TABLE_NAME | ? | ? |
COLUMN_NAME | ? | ? |
ORDINAL_POSITION | ? | ? |
POSITION_IN_UNIQUE_CONSTRAINT | ? | ? |
REFERENCED_TABLE_SCHEMA | ? | ? |
REFERENCED_TABLE_NAME | ? | ? |
REFERENCED_COLUMN_NAME | ? | ? |
注:
制約が外部キーの場合、これは外部キーのカラムで、外部キーが参照するカラムではありません。
ORDINAL_POSITION
の値は制約内のカラムの位置で、テーブル内のカラムの位置ではありません。カラムの位置には
1 から始まる番号が付いています。
POSITION_IN_UNIQUE_CONSTRAINT
の値は一意およびプライマリ キー制約に対し
NULL
です。外部キーの制約では、参照されるテーブルのキーの順序です。
例えば、以下の定義を有する 2
つのテーブル名 t1
と
t3
あるとします。
CREATE TABLE t1 ( s1 INT, s2 INT, s3 INT, PRIMARY KEY(s3) ) ENGINE=InnoDB; CREATE TABLE t3 ( s1 INT, s2 INT, s3 INT, KEY(s1), CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3) ) ENGINE=InnoDB;
それらの 2
つのテーブルに対し、KEY_COLUMN_USAGE
テーブルには 2 つの行があります。
1 つの行の CONSTRAINT_NAME
=
'PRIMARY'
,
TABLE_NAME
=
't1'
,
COLUMN_NAME
=
's3'
,
ORDINAL_POSITION
=
1
,
POSITION_IN_UNIQUE_CONSTRAINT
=
NULL
.
1 つの行の CONSTRAINT_NAME
=
'CO'
,
TABLE_NAME
=
't3'
,
COLUMN_NAME
=
's2'
,
ORDINAL_POSITION
=
1
,
POSITION_IN_UNIQUE_CONSTRAINT
=
1
.
ROUTINES
テーブルは保存されたルーチン(プロシージャおよび関数の両方)
に関する情報を提供します。ROUTINES
テーブルはこの段階ではユーザー定義の関数 (UDF)
を含みません。
「mysql.proc
名」
の名前のカラムは
INFORMATION_SCHEMA.ROUTINES
テーブル
カラムに相当する mysql.proc
テーブル カラムを意味します。
INFORMATION_SCHEMA
名 | mysql.proc 名 | 備考 |
SPECIFIC_NAME | specific_name | ? |
ROUTINE_CATALOG | ? | NULL |
ROUTINE_SCHEMA | db | ? |
ROUTINE_NAME | name | ? |
ROUTINE_TYPE | type | {PROCEDURE|FUNCTION} |
DTD_IDENTIFIER | ? | (データタイプ デスクリプター) |
ROUTINE_BODY | ? | SQL |
ROUTINE_DEFINITION | body | ? |
EXTERNAL_NAME | ? | NULL |
EXTERNAL_LANGUAGE | language | NULL |
PARAMETER_STYLE | ? | SQL |
IS_DETERMINISTIC | is_deterministic | ? |
SQL_DATA_ACCESS | sql_data_access | ? |
SQL_PATH | ? | NULL |
SECURITY_TYPE | security_type | ? |
CREATED | created | ? |
LAST_ALTERED | modified | ? |
SQL_MODE | sql_mode | MySQL 拡張 |
ROUTINE_COMMENT | comment | MySQL 拡張 |
DEFINER | definer | MySQL 拡張 |
注:
MySQL は EXTERNAL_LANGUAGE
をこのように計算します。
mysql.proc.language='SQL'
の場合、EXTERNAL_LANGUAGE
は
NULL
そうでない場合、EXTERNAL_LANGUAGE
は mysql.proc.language
にあります。しかし、まだ外部言語がないので、それは常に
NULL
です。
VIEWS
テーブルはデータベースの表示に関する情報を提供します。このテーブルにアクセスするには
SHOW VIEW
の権限が必要です。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
TABLE_CATALOG | ? | NULL |
TABLE_SCHEMA | ? | ? |
TABLE_NAME | ? | ? |
VIEW_DEFINITION | ? | ? |
CHECK_OPTION | ? | ? |
IS_UPDATABLE | ? | ? |
DEFINER | ? | ? |
SECURITY_TYPE | ? | ? |
注:
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
カラムは常には
NONE
の値があります。
IS_UPDATABLE
カラムは表示が更新可能な場合は
YES
、更新できない場合は
NO
になります。
DEFINER
カラムは誰がその表示を定義したかを示します。SECURITY_TYPE
には DEFINER
あるいは
INVOKER
の値があります。
TRIGGERS
テーブルはトリガに関する情報を提供します。このテーブルにアクセスするには
SUPER
権限が必要です。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
TRIGGER_CATALOG | ? | NULL |
TRIGGER_SCHEMA | ? | ? |
TRIGGER_NAME | Trigger | ? |
EVENT_MANIPULATION | Event | ? |
EVENT_OBJECT_CATALOG | ? | NULL |
EVENT_OBJECT_SCHEMA | ? | ? |
EVENT_OBJECT_TABLE | Table | ? |
ACTION_ORDER | ? | 0 |
ACTION_CONDITION | ? | NULL |
ACTION_STATEMENT | Statement | ? |
ACTION_ORIENTATION | ? | ROW |
ACTION_TIMING | Timing | ? |
ACTION_REFERENCE_OLD_TABLE | ? | NULL |
ACTION_REFERENCE_NEW_TABLE | ? | NULL |
ACTION_REFERENCE_OLD_ROW | ? | OLD |
ACTION_REFERENCE_NEW_ROW | ? | NEW |
CREATED | ? | NULL (0 ) |
SQL_MODE | ? | MySQL 拡張 |
DEFINER | ? | MySQL 拡張 |
注:
TRIGGER_SCHEMA
および
TRIGGER_NAME
カラムはトリガが発生するデータベースおよびトリガ名をそれぞれ含みます。
EVENT_MANIPULATION
カラムは
'INSERT'
、'DELETE'
、あるいは
'UPDATE'
のいずれかの値を含みます。
章?18. トリガ
で説明したように、すべてのトリガは正確に 1
つのテーブルに関連付けられます。EVENT_OBJECT_SCHEMA
および EVENT_OBJECT_TABLE
カラムはこのテーブルが発生するデータベース、およびテーブル名を含みます。
ACTION_ORDER
ステートメントは同じテーブルのすべての類似トリガ
リストのトリガの実行順序を含みます。現在この値は常に
0
です。というのは同じテーブルで同じ
EVENT_MANIPULATION
および
ACTION_TIMING
で1
つ以上のトリガを持てないからです。
ACTION_STATEMENT
カラムはトリガが呼び出されたときに実行されるステートメントを含みます。これは
SHOW TRIGGERS
から出力される
Statement
カラムに表示されるテキストと同じです。このテキストは
UTF-8
エンコーディングを使用していることを留意してください。
ACTION_ORIENTATION
カラムは常に
'ROW'
の値を含みます。
ACTION_TIMING
カラムは
'BEFORE'
あるいは
'AFTER'
のいずれかの値を含みます。
ACTION_REFERENCE_OLD_ROW
および
ACTION_REFERENCE_NEW_ROW
はそれぞれ新旧のカラム識別子を含みます。このことは
ACTION_REFERENCE_OLD_ROW
は常に
'OLD'
の値を含み
ACTION_REFERENCE_NEW_ROW
は常に
'NEW'
の値を含みます。
SQL_MODE
カラムはトリガが作成されたとき(そしてこのように現在のサーバーの
SQL
モードに関係なくトリガが呼び出されたときにはいつでも有効です)
有効だったサーバーの SQL
モードを表示します。このカラムの可能な範囲の値は
sql_mode
システム変数と同じです。項4.2.6. 「SQL モード」
を参照してください。
DEFINER
カラムが MySQL 5.1.2
に追加されました。DEFINER
は誰がトリガを定義したかを示します。
以下のカラムは常に NULL
を含みます。TRIGGER_CATALOG
、EVENT_OBJECT_CATALOG
、ACTION_CONDITION
、ACTION_REFERENCE_OLD_TABLE
、ACTION_REFERENCE_NEW_TABLE
、および
CREATED
。
項18.3. 「トリガの使用」
で定義されたins_sum
の使用例
mysql> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS\G
*************************** 1. row ***************************
TRIGGER_CATALOG: NULL
TRIGGER_SCHEMA: test
TRIGGER_NAME: ins_sum
EVENT_MANIPULATION: INSERT
EVENT_OBJECT_CATALOG: NULL
EVENT_OBJECT_SCHEMA: test
EVENT_OBJECT_TABLE: account
ACTION_ORDER: 0
ACTION_CONDITION: NULL
ACTION_STATEMENT: SET @sum = @sum + NEW.amount
ACTION_ORIENTATION: ROW
ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
ACTION_REFERENCE_OLD_ROW: OLD
ACTION_REFERENCE_NEW_ROW: NEW
CREATED: NULL
SQL_MODE:
DEFINER: me@localhost
項12.5.4.29. 「SHOW TRIGGERS
構文」 も参照してください。
PLUGINS
テーブルはサーバーのプラグインに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
PLUGIN_NAME | Name | MySQL 拡張 |
PLUGIN_VERSION | ? | MySQL 拡張 |
PLUGIN_STATUS | Status | MySQL 拡張 |
PLUGIN_TYPE | Type | MySQL 拡張 |
PLUGIN_TYPE_VERSION | ? | MySQL 拡張 |
PLUGIN_LIBRARY | Library | MySQL 拡張 |
PLUGIN_LIBRARY_VERSION | ? | MySQL 拡張 |
PLUGIN_AUTHOR | ? | MySQL 拡張 |
PLUGIN_DESCRIPTION | ? | MySQL 拡張 |
注:
PLUGINS
テーブルは非標準のテーブルです。MySQL 5.1.5
に追加されました。
項12.5.4.20. 「SHOW PLUGINS
構文」 も参照してください。
PLUGINS
テーブルはストレージ
エンジンに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
ENGINE | Engine | MySQL 拡張 |
SUPPORT | Support | MySQL 拡張 |
COMMENT | Comment | MySQL 拡張 |
TRANSACTIONS | Transactions | MySQL 拡張 |
XA | XA | MySQL 拡張 |
SAVEPOINTS | Savepoints | MySQL 拡張 |
注:
ENGINES
テーブルは非標準のテーブルです。MySQL 5.1.5
に追加されました。
項12.5.4.13. 「SHOW ENGINES
構文」 も参照してください。
PARTITIONS
テーブルはテーブルの分割に関する情報を提供します。テーブルの分割に関する詳細は
章?15. パーティショニング を参照してください。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
TABLE_CATALOG | ? | MySQL 拡張 |
TABLE_SCHEMA | ? | MySQL 拡張 |
TABLE_NAME | ? | MySQL 拡張 |
PARTITION_NAME | ? | MySQL 拡張 |
SUBPARTITION_NAME | ? | MySQL 拡張 |
PARTITION_ORDINAL_POSITION | ? | MySQL 拡張 |
SUBPARTITION_ORDINAL_POSITION | ? | MySQL 拡張 |
PARTITION_METHOD | ? | MySQL 拡張 |
SUBPARTITION_METHOD | ? | MySQL 拡張 |
PARTITION_EXPRESSION | ? | MySQL 拡張 |
SUBPARTITION_EXPRESSION | ? | MySQL 拡張 |
PARTITION_DESCRIPTION | ? | MySQL 拡張 |
TABLE_ROWS | ? | MySQL 拡張 |
AVG_ROW_LENGTH | ? | MySQL 拡張 |
DATA_LENGTH | ? | MySQL 拡張 |
MAX_DATA_LENGTH | ? | MySQL 拡張 |
INDEX_LENGTH | ? | MySQL 拡張 |
DATA_FREE | ? | MySQL 拡張 |
CREATE_TIME | ? | MySQL 拡張 |
UPDATE_TIME | ? | MySQL 拡張 |
CHECK_TIME | ? | MySQL 拡張 |
CHECKSUM | ? | MySQL 拡張 |
PARTITION_COMMENT | ? | MySQL 拡張 |
NODEGROUP | ? | MySQL 拡張 |
TABLESPACE_NAME | ? | MySQL 拡張 |
注:
PARTITIONS
テーブルは非標準のテーブルです。それは
MySQL 5.1.6 に追加されています。
このテーブルの各レコードは個々の分割あるいは分割されたテーブルのサブ分割に一致します。
TABLE_CATALOG
:このカラムは常に
NULL
です。
TABLE_SCHEMA
:このカラムはテーブルが属すデータベース名を含みます。
TABLE_NAME
:このカラムは分割を含むテーブル名を含みます。
PARTITION_NAME
:分割の名前です。
SUBPARTITION_NAME
:PARTITIONS
テーブルのレコードがサブ分割を表す場合、このカラムはサブ分割名を含みます。そうでない場合
NULL
になります。
PARTITION_ORDINAL_POSITION
:すべての分割はそれらが定義されたときの順序でインデックスが付けられます。最初の分割に割り当てられた番号は
1
になります。インデックスは分割が追加、削除、再手配されることによって変わります。このカラムに表示された番号はインデックスの変更を考慮した現在の順序を表します。
SUBPARTITION_ORDINAL_POSITION
:所定の分割のサブ分割はテーブル内で分割がインデックスされるの同様にインデックスまたは再インデックスされます。
PARTITION_METHOD
:RANGE
、LIST
、HASH
、LINEAR
HASH
、KEY
、あるいは
LINEAR KEY
のいずれかの値です。つまり、
項15.2. 「パーティショニングのタイプ」
で説明した利用できる分割タイプの 1
つです。
SUBPARTITION_METHOD
:HASH
、LINEAR
HASH
、KEY
あるいは
LINEAR KEY
のいずれかの値の 1
つです。つまり、項15.2.5. 「サブ分割」
で説明したサブ利用できる分割タイプの 1
つです。
PARTITION_EXPRESSION
:これはテーブルの現在の分割スキーマを作成した
CREATE TABLE
あるいは ALTER
TABLE
に使用された分割関数の式です。
例として、このステートメントを使用して
test
データベースで作成された分割テーブルを考えてみます。
CREATE TABLE tp ( c1 INT, c2 INT, c3 VARCHAR(25) ) PARTITION BY HASH(c1 + c2) PARTITIONS 4;
このテーブルの分割のPARTITIONS テーブル
レコードのPARTITION_EXPRESSION
カラムは以下のように c1 + c2
を表示します。
mysql>SELECT DISTINCT PARTITION_EXPRESSION
>FROM INFORMATION_SCHEMA.PARTITIONS
>WHERE TABLE_NAME='tp' AND TABLE_SCHEMA='test';
+----------------------+ | PARTITION_EXPRESSION | +----------------------+ | c1 + c2 | +----------------------+ 1 row in set (0.09 sec)
SUBPARTITION_EXPRESSION
:これはテーブルの分割を定義するために使用された分割式に
PARTITION_EXPRESSION
が行っているのと同様にテーブルのサブ分割を定義するサブ分割式に対して同様に機能します。
テーブルにサブ分割がない場合、このカラムは
NULL
です。
PARTITION_DESCRIPTION
:このカラムは
RANGE および LIST
分割に使用されます。RANGE
分割では、それは分割の VALUES LESS
THAN
節で設定された値セットを含みます。それは整数あるいは
MAXVALUE
のいずれかになります。LIST
分割では、このカラムは分割 VALUES
IN
節で定義された値を含みます。それは整数値のコンマ区切りのリストです。
PARTITION_METHOD
が
RANGE
あるいは LIST
以外の分割の場合、このカラムは常に
NULL
になります。
TABLE_ROWS
:分割のテーブル行の数です。
AVG_ROW_LENGTH
:この分割あるいはサブ分割で保存された行の平均の長さでバイトで表します。
これは TABLE_ROWS
で分割された
DATA_LENGTH
と同じです。
DATA_LENGTH
:この分割あるいはサブ分割に保存されたすべての行の全長でバイトで表します。?
つまり分割およびサブ分割に保存されたバイトの総数です。
MAX_DATA_LENGTH
:この分割およびサブ分割に保存される最大のバイト数です。
INDEX_LENGTH
:この分割およびサブ分割のインデックス
ファイルの長さでバイトで表します。
DATA_FREE
:分割あるいはサブ分割に割り当てられたバイト数で使用されていないものです。
CREATE_TIME
:分割およびサブ分割の作成に要する時間です。
UPDATE_TIME
:分割あるいはサブ分割が最後に変更された時間です。
CHECK_TIME
:分割あるいはサブ分割が属すテーブルが最後にチェックされた時間です。
注:ストレージ
エンジンの中には今回更新されないものがあります。というのはこれらのストレージ
エンジンを使用しているテーブルに対し、この値が常に
NULL
だからです。
CHECKSUM
:チェックサムの値(もしあれば)、そうでない場合、このカラムは
NULL
です。
PARTITION_COMMENT
:このカラムは分割に対するコメントのテキストを含んでいます。
このカラムのデフォルト値は空の文字列です。
NODEGROUP
:これは分割が属すノードグループです。これは
MySQL
クラスタテーブルにのみ関連します。そうでない場合このカラムの値は常に
0
です。
TABLESPACE_NAME
:このカラムは分割が属すテーブルスペース名を含んでいます。MySQL
5.1 では、このカラムの値は常に
DEFAULT
です。
重要MySQL 5.1.6 以前の
MySQL
バージョンで作成された分割テーブルがある場合、MySQL
5.1.6
あるいはそれ以降にアップグレードする場合、
SHOW
、あるいは
DESCRIBE
the PARTITIONS
から SELECT
することはできません。MySQL 5.1.5
あるいはそれ以前のバージョンから MySQL 5.1.6
およびそれ以降にアップグレードする前に
項C.1.11. 「Changes in release 5.1.6 (01 February 2006)」 を
参照してください。
非分割のテーブルには
INFORMATION_SCHEMA.PARTITIONS
にレコードが 1
つあります。しかし、PARTITION_NAME
、SUBPARTITION_NAME
、PARTITION_ORDINAL_POSITION
、SUBPARTITION_ORDINAL_POSITION
、PARTITION_METHOD
、SUBPARTITION_METHOD
、PARTITION_EXPRESSION
、SUBPARTITION_EXPRESSION
、および
PARTITION_DESCRIPTION
カラムの値はすべて NULL
です。(この場合の PARTITION_COMMENT
のカラムは空白です。)
MySQL 5.1 には、PARTITIONS
テーブルに NDBCluster
ストレージ
エンジンを使用したテーブルに対しレコードが
1
つだけあります。同じカラムはまた非分割テーブルに対しては
NULL
(あるいは空) です。
EVENTS
テーブルは 章?19. Event Scheduler
で説明した計画したイベントに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
EVENT_CATALOG | ? | NULL , MySQL 拡張 |
EVENT_SCHEMA | Db | MySQL 拡張 |
EVENT_NAME | Name | MySQL 拡張 |
DEFINER | Definer | MySQL 拡張 |
EVENT_BODY | ? | MySQL 拡張 |
EVENT_DEFINITION | ? | MySQL 拡張 |
EVENT_TYPE | Type | MySQL 拡張 |
EXECUTE_AT | Execute at | MySQL 拡張 |
INTERVAL_VALUE | Interval value | MySQL 拡張 |
INTERVAL_FIELD | Interval field | MySQL 拡張 |
SQL_MODE | ? | MySQL 拡張 |
STARTS | Starts | MySQL 拡張 |
ENDS | Ends | MySQL 拡張 |
STATUS | Status | MySQL 拡張 |
ON_COMPLETION | ? | MySQL 拡張 |
CREATED | ? | MySQL 拡張 |
LAST_ALTERED | ? | MySQL 拡張 |
LAST_EXECUTED | ? | MySQL 拡張 |
EVENT_COMMENT | ? | MySQL 拡張 |
注:
EVENTS
テーブルは非標準のテーブルです。それは
MySQL 5.1.6 に追加されています。
EVENT_CATALOG
:このカラムの値は常に
NULL
です。
EVENT_SCHEMA
:イベントが属すスキーマ(データベース)の名前です。
EVENT_NAME
:イベントの名前です。
DEFINER
:イベントを作成したユーザーです。常に
'
フォーマットに表示されます。
user_name
'@'host_name
'
EVENT_BODY
:イベントの
DO
節のステートメントに使用された言語です。MySQL
5.1 では、これは常に
SQL
です。
このカラムは MySQL
5.1.12 に追加されています。 MySQL
の以前のバージョンの同じ名前のカラム(今の名前は
EVENT_DEFINITION
)
と混同することはありません。
EVENT_DEFINITION
:イベント
DO
節を構成する SQL
ステートメントのテキストです。換言すれば、このイベントで実行されたステートメントです。
注:MySQL 5.1.12
以前のバージョンでは、このカラムは
EVENT_BODY
という名前でした。
EVENT_TYPE
:ONE TIME
あるいは RECURRING
のいずれかの値です。
EXECUTE_AT
:1
回のイベントでは、これはイベントの作成に使用された
CREATE EVENT
ステートメントの
AT
節で指定された
DATETIME
値、あるいはイベントを変更した最後の
ALTER EVENT
ステートメントです。このカラムに表示された値はイベント
AT
節に含まれる INTERNAL
値の加算あるいは減算を意味しています。例えば、イベントが
ON SCHEDULE AT CURRENT_TIMESTAMP + '1:6'
DAY_HOUR
を使用して作成された場合、およびイベントが
2006-02-09 の 14:05:30
に作成された場合、カラムに表示される値は
'2006-02-10 20:05:30'
になります。
そのイベントのタイミングが AT
節(すなわち、イベントは再帰的な場合)ではなく
EVERY
節で決定される場合、
このカラムの値は NULL
になります。
INTERVAL_VALUE
:再帰的なイベントの場合、このカラムはイベント
EVERY
節の数値的な部分を含みます。
1
回のイベントの場合(つまり、イベントのタイミングが
AT
節で決まるイベントの場合)、このカラムの値は
NULL
になります。
INTERVAL_FIELD
:再帰的なイベントの場合、このカラムはそのイベントを管理する EVERY
節の単位部分を含みます。そのイベントは
'INTERVAL_
'
のプリフィックスが付きます。このように、このカラムは
'INTERVAL_YEAR
'、'INTERVAL_QUARTER
'、'INTERVAL_DAY
'
などの値を含みます。
1
回のイベントの場合(つまり、そのタイミングが
AT
節で決まるイベントの場合)、このカラムの値は
NULL
になります。
SQL_MODE
:イベントが作成されたあるいは変更された時に実行中のSQL
モード。
STARTS
:定義に STARTS
節を含む再帰的なイベントでは、このカラムは相当する
DATETIME
値を含みます。EXECUTE_AT
カラムで、この値は使用されている式を解きます。
イベントのタイミングに影響を与えるような
STARTS
節がない場合、このカラムは空です。(MySQL
5.1.8 以前の場合は、そのような場合それは
NULL
が含まれていました。)
ENDS
:定義に ENDS
節を含む再帰的なイベントでは、このカラムは相当する
DATETIME
値を含みます。EXECUTE_AT
カラム(前の例を参照)では、この値は使用されている式を解きます。
イベントのタイミングに影響を与える
ENDS
節がない場合、このカラムは
NULL
を含みます。
STATUS
:ENABLED
あるいは DISABLED
の 2
つの値のいずれかの値です。
ON_COMPLETION
:PRESERVE
あるいは NOT PRESERVE
の 2
つの値のいずれかの値です。
CREATED
:イベントが作成された日時です。これは
DATETIME
値です。
LAST_ALTERED
:イベントが最後に変更された日時です。これは
DATETIME
値です。イベントが作成されてから変更されなかった場合、このカラムは
CREATED
カラムと同じ値を保持します。
LAST_EXECUTED
:イベントが最後に実行された日時です。DATETIME
値。イベントが実行されなかった場合、このカラムの値は
NULL
です。
EVENT_COMMENT
:イベントにコメントがある場合のコメントのテキストです。コメントが無い場合、このカラムの値は空の文字列になります。
例:ユーザー
jon@ghidora
が e_daily
というイベントを作成したとします。それを数分後に以下の
ALTER EVENT
ステートメントを使用して変更します。
DELIMITER | CREATE EVENT e_daily ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR DISABLE COMMENT 'Saves total number of sessions and clears the table once per day.' DO BEGIN INSERT INTO site_activity.totals (when, total) SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions; DELETE FROM site_activity.sessions; END | DELIMITER ; ALTER EVENT e_daily ENABLED;
(コメントは複数の行にわたって展開できます。)
このユーザーは次に以下の SELECT
ステートメントを実行し、下記の出力を得ます。
mysql>SELECT * FROM INFORMATION_SCHEMA.EVENTS
>WHERE EVENT_NAME = 'e_daily'
>AND EVENT_SCHEMA = 'myschema'\G
*************************** 1. row *************************** EVENT_CATALOG: NULL EVENT_SCHEMA: myschema EVENT_NAME: e_daily DEFINER: jon@ghidora EVENT_BODY: BEGIN INSERT INTO site_activity.totals (when, total) SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions; DELETE FROM site_activity.sessions; END EVENT_TYPE: RECURRING EXECUTE_AT: NULL INTERVAL_VALUE: 1 INTERVAL_FIELD: INTERVAL_DAY SQL_MODE: NULL STARTS: 2006-02-09 10:41:23 ENDS: NULL STATUS: ENABLED ON_COMPLETION: DROP CREATED: 2006-02-09 14:35:35 LAST_ALTERED: 2006-02-09 14:41:23 LAST_EXECUTED: NULL EVENT_COMMENT: Saves total number of sessions and clears the table once per day. 1 row in set (0.50 sec)
重要STARTS
、ENDS
、および
LAST_EXECUTED
カラムで表示された時間はサーバーのタイムゾーンの設定にかかわらず現在の世界時
(GMT あるいは UTC)
で表示されます。mysql.event
テーブルのstarts
、ends
、および
last_executed
カラム並びに SHOW
[FULL] EVENTS
の出力の Starts
および ENDs
カラムも同様に世界時を使用しています。)CREATED
および LAST_ALTERED
カラムはサーバーのタイムゾーン
(mysql.event
テーブルの
created
および
last_altered
カラムも同様)
を使用しています。。
例えば、前に例示した e_daily
イベントはオーストラリアのブリスベンにあるコンピューターで、東部オーストラリア時間の2006
年 2 月 9日 の 14:35:35
に作成されたとすると、それはタイムゾーンでは
GMT+10.00
となります。イベントの定義は(このセクションの以前の例示の
ALTER EVENT
を使用して ) 数分後に
14:41:23 に更新されました。これらが
CREATED
および
LAST_ALTERED
に表示される値です。イベントは 6 時間後 ?
つまり、同日のローカルタイムの 20:41:23
に実行されるように計画されます。この時間から
10 時間を減算すると世界時の 10:41:23
が得られ、この値が STARTS
に表示されます。
世界時の使用はアプリケーションでは当てに出来ません。というのは MySQL のリリースによってサーバーのローカルタイムが変更されることが予想されるためです。(Bug#16420 参照)
項12.5.4.15. 「SHOW EVENTS
」 も参照してください。
FILES
テーブルは MySQL
NDB
ディスクデータ
テーブルが保存されるファイルに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
FILE_ID | ? | MySQL 拡張 |
FILE_NAME | ? | MySQL 拡張 |
FILE_TYPE | ? | MySQL 拡張 |
TABLESPACE_NAME | ? | MySQL 拡張 |
TABLE_CATALOG | ? | MySQL 拡張 |
TABLE_SCHEMA | ? | MySQL 拡張 |
TABLE_NAME | ? | MySQL 拡張 |
LOGFILE_GROUP_NAME | ? | MySQL 拡張 |
LOGFILE_GROUP_NUMBER | ? | MySQL 拡張 |
ENGINE | ? | MySQL 拡張 |
FULLTEXT_KEYS | ? | MySQL 拡張 |
DELETED_ROWS | ? | MySQL 拡張 |
UPDATE_COUNT | ? | MySQL 拡張 |
FREE_EXTENTS | ? | MySQL 拡張 |
TOTAL_EXTENTS | ? | MySQL 拡張 |
EXTENT_SIZE | ? | MySQL 拡張 |
INITIAL_SIZE | ? | MySQL 拡張 |
MAXIMUM_SIZE | ? | MySQL 拡張 |
AUTOEXTEND_SIZE | ? | MySQL 拡張 |
CREATION_TIME | ? | MySQL 拡張 |
LAST_UPDATE_TIME | ? | MySQL 拡張 |
LAST_ACCESS_TIME | ? | MySQL 拡張 |
RECOVER_TIME | ? | MySQL 拡張 |
TRANSACTION_COUNTER | ? | MySQL 拡張 |
VERSION | ? | MySQL 拡張 |
ROW_FORMAT | ? | MySQL 拡張 |
TABLE_ROWS | ? | MySQL 拡張 |
AVG_ROW_LENGTH | ? | MySQL 拡張 |
DATA_LENGTH | ? | MySQL 拡張 |
MAX_DATA_LENGTH | ? | MySQL 拡張 |
INDEX_LENGTH | ? | MySQL 拡張 |
DATA_FREE | ? | MySQL 拡張 |
CREATE_TIME | ? | MySQL 拡張 |
UPDATE_TIME | ? | MySQL 拡張 |
CHECK_TIME | ? | MySQL 拡張 |
CHECKSUM | ? | MySQL 拡張 |
STATUS | ? | MySQL 拡張 |
EXTRA | ? | MySQL 拡張 |
注:
FILE_ID
カラムの値は自動生成されます。
FILE_NAME
は CREATE LOGFILE
GROUP
あるいは ALTER LOGFILE
GRUOP
によって作成された
UNDO
ログファイルの名前です。または CREATE
TABLESPACE
あるいは ALTER
TABLESPACE
で作成されたデータファイルです。
FILE_TYPE
は UNDOFILE
あるいは DATAFILE
のいずれかの値です。
TABLESPACE_NAME
はファイルが関連付けられているテーブルスペースの名前です。
MySQL 5.1 では、TABLESPACE_CATALOG
カラムの値は常に NULL
です。
TABLE_NAME
は関連するファイルがある場合にファイルに関連付けられたディスク
データ テーブルの名前です。
LOGFILE_GROUP_NAME
カラムはログファイルあるいはデータファイルが属すログファイルのグループに名前を付けます。
UNDO
ログファイルでは、LOGFILE_GROUP_NUMBER
はログファイルが属すログファイル
グループの自動生成された ID を含みます。
MySQL クラスタ
ディスクデータのログファイルあるいはデータファイルに対し、ENGINE
カラムの値は常に NDB
あるいは
NDBCLUSTER
になります。
MySQL クラスタ ディスク
データのログファイルに対し、FULLTEXT_KEYS
カラムの値は常に空です。
FREE EXTENTS
カラムはファイルが使用していない拡張の番号を表示します。TOTAL
EXTENTS
カラムはファイルに割り当てられた拡張の総数を表示します。
これらの 2 つのカラムの違いは現在ファイルが使用している拡張の数です。
SELECT TOTAL_EXTENTS - FREE_EXTENTS AS extents_used FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = 'myfile.dat';
使用中のディスク容量を
EXTENT_SIZE
カラムの値によってこの違いを乗算したファイルによって最大化することができます。それによりファイルにバイトで拡張のサイズを与えます。
SELECT (TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE AS bytes_used FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = 'myfile.dat';
同様に、所定のファイルに残された利用できるスペースの容量を
FREE_EXTENTS
に
EXTENT_SIZE
乗算することで予測できます。
SELECT FREE_EXTENTS * EXTENT_SIZE AS bytes_free FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = 'myfile.dat';
重要上記のクエリで生成されたバイトの値は概算のみで、その正確性は
EXTENT_SIZE
の値に逆比例します。つまり、EXTENT_SIZE
が大きくなれば、概算の正確性は落ちます。
拡張が一度使用されるとそれが属すデータファイルをドロップせずにはそれを自由に出来ないことを覚えておく必要があります。このことは、ディスクデータのテーブルからの削除はディスクスペースを増やさないということです。
拡張サイズは CREATE TABLESPACE
ステートメントで設定できます。詳細については、項12.1.10. 「CREATE TABLESPACE
構文」
をご参照してください。
INITIAL_SIZE
カラムはファイルのサイズをバイトで表示します。これはファイルの作成に使用された
CREATE LOGFILE GROUP、
、ALTER
LOGFILE GROUP
、CREATE
TABLESPACE
、あるいは ALTER
TABLESPACE
の INITIAL_SIZE
節に使用された値と同じです。
MySQL 5.1 クラスタ ディス クデータ
ファイルでは、MAXIMUM_SIZE
カラムの値は常に INITIAL_SIZE
と同じで、 AUTOEXTEND_SIZE
カラムは常に空です。
CREATION_TIME
カラムはファイルが作成された日時を表示します。LAST_UPDATE_TIME
カラムはファイルが最後に変更された日時を表示します。
LAST_ACCESSED
カラムはファイルが最後にサーバーによってアクセスされた日時を表示します。
現在は、これらのカラムの値はオペレーティング
システムから知らされたものであり、NDB
ストレージ
エンジンにより供給されたものではありません。オペレーティング
システムが何の値も提供していない場合には、これらのカラムには
0000-00-00 00:00:00
が表示されます。
MySQL クラスタ ディスク
データのファイルでは、RECOVER_TIME
および TRANSACTION_COUNTER
カラムは常に 0
です。
MySQL 5.1 クラスタ ディスク データ
ファイルでは、以下のカラムは常に
NULL
です。
VERSION
ROW_FORMAT
TABLE_ROWS
AVG_ROW_LENGTH
DATA_LENGTH
MAX_DATA_LENGTH
INDEX_LENGTH
DATA_FREE
CREATE_TIME
UPDATE_TIME
CHECK_TIME
CHECKSUM
MySQLクラスタ ディスク データ
ファイルでは、STATUS
カラムの値は常に NORMAL
です。
MySQL クラスタ ディスク データ
ファイルでは、EXTRA
カラムは、各データノードがファイルのコピーを持っているためどのデータノードにファイルが属すかを表示します。例えば、このステートメントを
MySQL クラスタの 4
つのデータノードで使用するとします。
CREATE LOGFILE GROUP mygroup ADD UNDOFILE 'new_undo.dat' INITIAL_SIZE 2G ENGINE NDB;
CREATE LOGFILE GROUP
ステートメントの実行を完了すると、FILES
テーブルに対するこのクエリの以下の結果に類似した結果が表示されます。
mysql>SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA
->FROM INFORMATION_SCHEMA.FILES
->WHERE FILE_NAME = 'new_undo.dat';
+--------------------+-------------+----------------+ | LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA | +--------------------+-------------+----------------+ | mygroup | UNDO FILE | CLUSTER_NODE=3 | | mygroup | UNDO FILE | CLUSTER_NODE=4 | | mygroup | UNDO FILE | CLUSTER_NODE=5 | | mygroup | UNDO FILE | CLUSTER_NODE=6 | +--------------------+-------------+----------------+ 4 rows in set (0.01 sec)
FILES
テーブルは非標準のテーブルです。それは
MySQL 5.1.6 に追加されています。
MySQL 5.1.14 を開始すると、ログファイル
グループの作成に続いて FILES
テーブルに追加の行が表示されます。この行は
FILE_NAME
カラムの値に対して
NULL
です。というのはこの行に対し、FILE_ID
カラムの値は常に 0
で、FILE_TYPE
カラムは常に
UNDO FILE
で、STATUS
カラムは常に NORMAL
になります。MySQL 5.1
では、ENGINE
カラムの値は常に
ndbcluster
です。
この行は FREE_EXTENTS
カラムで
LOGFILE_GROUP_NAME
および
LOGFILE_GROUP_NUMBER
カラムにそれぞれその名前と数が表示された所定のログファイル
グループに属すすべての undo
ファイルに利用できるフリー拡張の総数を表示します。
MySQL クラスタに既存のログファイルが無いものとして、以下のステートメントを使用してログファイルを 1 つ作成するとします。
mysql>CREATE LOGFILE GROUP lg1
->ADD UNDOFILE 'undofile.dat'
->INITIAL_SIZE = 16M
->UNDO_BUFFER_SIZE = 1M
->ENGINE = NDB;
Query OK, 0 rows affected (3.81 sec)
FILES
テーブルにクエリすると
NULL
行が表示されます。
mysql>SELECT DISTINCT
->FILE_NAME AS File,
->FREE_EXTENTS AS Free,
->TOTAL_EXTENTS AS Total,
->EXTENT_SIZE AS Size,
->INITIAL_SIZE AS Initial
->FROM INFORMATION_SCHEMA.FILES;
+--------------+---------+---------+------+----------+ | File | Free | Total | Size | Initial | +--------------+---------+---------+------+----------+ | undofile.dat | NULL | 4194304 | 4 | 16777216 | | NULL | 4184068 | NULL | 4 | NULL | +--------------+---------+---------+------+----------+ 2 rows in set (0.01 sec)
undo
ロギングに利用できるフリー拡張の総数は常にログファイルのすべての
undo ファイルに対して undo
ファイルを維持に必要なオーバーヘッドにより
TOTAL_EXTENTS
カラムの値の合計より幾分少なくなります。これはログファイル
グループに 2 番目の undo
ファイルを追加すると表示され、FILES
テーブルに対して前のクエリを繰返します。
mysql>ALTER LOGFILE GROUP lg1
->ADD UNDOFILE 'undofile02.dat'
->INITIAL_SIZE = 4M
->ENGINE = NDB;
Query OK, 0 rows affected (1.02 sec) mysql>SELECT DISTINCT
->FILE_NAME AS File,
->FREE_EXTENTS AS Free,
->TOTAL_EXTENTS AS Total,
->EXTENT_SIZE AS Size,
->INITIAL_SIZE AS Initial
->FROM INFORMATION_SCHEMA.FILES;
+----------------+---------+---------+------+----------+ | File | Free | Total | Size | Initial | +----------------+---------+---------+------+----------+ | undofile.dat | NULL | 4194304 | 4 | 16777216 | | undofile02.dat | NULL | 1048576 | 4 | 4194304 | | NULL | 5223944 | NULL | 4 | NULL | +----------------+---------+---------+------+----------+ 3 rows in set (0.01 sec)
このログファイル グループを使用たディスク データ テーブルによる undo ロギングに利用されるバイトでのフリースペースの最大化はフリー拡張に初期サイズを乗算することで最大化できます。
mysql>SELECT
->FREE_EXTENTS AS 'Free Extents',
->FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
->FROM INFORMATION_SCHEMA.FILES
->WHERE LOGFILE_GROUP_NAME = 'lg1'
->AND FILE_NAME IS NULL;
+--------------+------------+ | Free Extents | Free Bytes | +--------------+------------+ | 5223944 | 20895776 | +--------------+------------+ 1 row in set (0.02 sec)
ディスク データ テーブルを作成してその中にいくつか行を挿入すると、undo のロギング用に残されたスペースを大まかに知ることができます。
mysql>CREATE TABLESPACE ts1
->ADD DATAFILE 'data1.dat'
->USE LOGFILE GROUP lg1
->INITIAL_SIZE 512M
->ENGINE = NDB;
Query OK, 0 rows affected (8.71 sec) mysql>CREATE TABLE dd (
->c1 INT NOT NULL PRIMARY KEY,
->c2 INT,
->c3 DATE
->)
->TABLESPACE ts1 STORAGE DISK
->ENGINE = NDB;
Query OK, 0 rows affected (2.11 sec) mysql>INSERT INTO dd VALUES
->(NULL, 1234567890, '2007-02-02'),
->(NULL, 1126789005, '2007-02-03'),
->(NULL, 1357924680, '2007-02-04'),
->(NULL, 1642097531, '2007-02-05');
Query OK, 4 rows affected (0.01 sec) mysql>SELECT
->FREE_EXTENTS AS 'Free Extents',
->FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
->FROM INFORMATION_SCHEMA.FILES
->WHERE LOGFILE_GROUP_NAME = 'lg1'
->AND FILE_NAME IS NULL;
+--------------+------------+ | Free Extents | Free Bytes | +--------------+------------+ | 5207565 | 20830260 | +--------------+------------+ 1 row in set (0.01 sec)
FILES
テーブルに関連付けられた
SHOW
コマンドはありません。
FILES
テーブルを使用してクラスタ ディスク データ
テーブルに関する情報の取得に関する他の例については
項14.11. 「MySQL Cluster ディスク データ ストレージ」
を参照してください。
PROCESSLIST
テーブルは動作しているスレッドに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
ID | Id | MySQL 拡張 |
USER | User | MySQL 拡張 |
HOST | Host | MySQL 拡張 |
DB | db | MySQL 拡張 |
COMMAND | Command | MySQL 拡張 |
TIME | Time | MySQL 拡張 |
STATE | State | MySQL 拡張 |
INFO | Info | MySQL 拡張 |
テーブル カラムの全体的な説明については
項12.5.4.24. 「SHOW PROCESSLIST
構文」 を参照してください。
注:
PROCESSLIST
テーブルは非標準のテーブルです。それは
MySQL 5.1.7 に追加されています。
相当する SHOW
ステートメントの出力と同様、PROCESSLIST
テーブルは PROCESS
の権限が無い場合は、お客様のスレッドに関する情報のみ表示されます。権限がある場合には他のスレッドに関する情報も表示できます。匿名のユーザーはどの行も見ることはできません。
SQL ステートメントが
INFORMATION_SCHEMA.PROCESSLIST
を参照している場合、ステートメントの実行が開始されると全体のテーブルを一度表示します。それでステートメント中の読み取りの一貫性が保たれます。複数のステートメントのトランザクションではリードの一貫性はありません。
以下のステートメントは等価です。
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST SHOW PROCESSLIST
REFERENTIAL_CONSTRAINTS
テーブルは外部キーに関する情報を提供します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
CONSTRAINT_CATALOG | ? | NULL |
CONSTRAINT_SCHEMA | ? | ? |
CONSTRAINT_NAME | ? | ? |
UNIQUE_CONSTRAINT_CATALOG | ? | NULL |
UNIQUE_CONSTRAINT_SCHEMA | ? | ? |
UNIQUE_CONSTRAINT_NAME | ? | ? |
MATCH_OPTION | ? | ? |
UPDATE_RULE | ? | ? |
DELETE_RULE | ? | ? |
TABLE_NAME | ? | ? |
REFERENCED_TABLE_NAME | ? | ? |
注:
REFERENTIAL_CONSTRAINTS
テーブルは
MySQL 5.1.10
に追加されています。REFERENCED_TABLE_NAME
カラムは MySQL 5.1.16 に追加されています。
TABLE_NAME
は
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
の
TABLE_NAME
と同じ値を持っています。
CONSTRAINT_SCHEMA
および
CONSTRAINT_NAME
は外部キーを認識します。
UNIQUE_CONSTRAINT_SCHEMA
、UNIQUE_CONSTRAINT_NAME
、および
REFERENCED_TABLE_NAME
は参照キーを認識します。(注:MySQL 5.1.16
以前のバージョンは、UNIQUE_CONSTRAINT_NAME
は制約ではなく間違って参照テーブルを指定しています。
この段階の MATCH_OPTION
の唯一有効な値は NONE
です。
UPDATE_RULE
あるいは
DELETE_RULE
の可能な値は
CASCADE
、SET NULL
,
SET
DEFAULT
、RESTRICT
、NO
ACTION
です。
GLOBAL_STATUS
および
SESSION_STATUS
テーブルはサーバーのステータス変数に関する情報を提供します。それらの中身は
SHOW GLOBAL STATUS
および SHOW
SESSION STATUS
ステートメント
(項12.5.4.26. 「SHOW STATUS
構文」 参照)
が生成する情報に一致します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
VARIABLE_NAME | Variable_name | ? |
VARIABLE_VALUE | Value | ? |
注:
GLOBAL_STATUS
および
SESSION_STATUS
テーブルは MySQL 5.1.12
に追加されています。
VARIABLE_VALUE
カラムには
BIGINT
タイプがあります。非整数値を持ついくつかのステータス変数は
BIGINT
値に組み込まれています。
GLOBAL_VARIABLES
および
SESSION_VARIABLES
テーブルはサーバーのステータス変数に関する情報を提供します。それらの中身は
SHOW GLOBAL VARIABLES
および SHOW
SESSION VARIABLES
ステートメント
(項12.5.4.30. 「SHOW VARIABLES
構文」参照)
が生成した情報に一致します。
INFORMATION_SCHEMA
名 | SHOW 名 | 備考 |
VARIABLE_NAME | Variable_name | ? |
VARIABLE_VALUE | Value | ? |
注:
GLOBAL_VARIABLES
および
SESSION_VARIABLES
テーブルは MySQL
5.1.12 に追加されています。
今後さらに INFORMATION_SCHEMA
テーブルを追加する予定です。特に、PARAMETERS
テーブルの必要性を強く感じています。
SHOW
ステートメントのいくつかの拡張は
INFORMATION_SCHEMA
の実装を伴います。
SHOW
を
INFORMATION_SCHEMA
そのものの構成に関す情報を取得するために使用できます。
いくつかの SHOW
ステートメントにはどの行を表示するかを指定する際に柔軟性を提供する
WHERE
節を使用できます。
INFORMATION_SCHEMA
は情報のデータベースで、その名前は SHOW
DATABASES
の出力に含まれています。同様に、SHOW
TABLES
を INFORMATION_SCHEMA
と一緒に使用してそのテーブルのリストを取得できます。
mysql> SHOW TABLES FROM INFORMATION_SCHEMA;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| KEY_COLUMN_USAGE |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| STATISTICS |
| TABLES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+---------------------------------------+
22 rows in set (0.04 sec)
SHOW COLUMNS
および
DESCRIBE
は個々の
INFORMATION_SCHEMA
テーブルのカラムに関する情報を表示できます。
いくつかの SHOW
ステートメントは
WHERE
節を使用できるように拡張されています。
SHOW CHARACTER SET SHOW COLLATION SHOW COLUMNS SHOW DATABASES SHOW FUNCTION STATUS SHOW KEYS SHOW OPEN TABLES SHOW PROCEDURE STATUS SHOW STATUS SHOW TABLE STATUS SHOW TABLES SHOW VARIABLES
WHERE
節がある場合、それは
SHOW
ステートメントで表示されるカラム名で評価されます。例えば、SHOW
CHARACTER SET
ステートメントはこれらの出力カラムを生成します。
mysql> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
...
WHERE
節を SHOW CHARACTER
SET
と一緒に使用する場合、それらのカラム名を参照します。例えば、以下のステートメントはデフォルトの照合が文字列
'japanese'
を含む文字セットに関する情報を表示します。
mysql> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';
+---------+---------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+---------------------------+---------------------+--------+
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
+---------+---------------------------+---------------------+--------+
このステートメントは複数バイトの文字セットを表示します。
mysql> SHOW CHARACTER SET WHERE Maxlen > 1;
+---------+---------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+---------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| euckr | EUC-KR Korean | euckr_korean_ci | 2 |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
+---------+---------------------------+---------------------+--------+