* データベースが提供されていない場合、データベース名のリストが表示されます。
* テーブルが提供されていない場合、データベース内の全てのマッチするテーブルが表示されます。
* カラムが提供されていない場合、テーブル内の全てのマッチするカラムとカラムタイプが表示されます。
出力は、ユーザがいくつかの権限を所持しているデータベース、テーブル、あるいは
カラムの名前のみを表示します。
最後のアーギュメントがシェル、もしくはSQLワイルドキャラクタを含んでいる場合(‘*’、‘?’、‘%’、あるいは‘_’)、
ワイルドカードとマッチする名前のみ表示されます。データベース名にアンダースコアが含まれる場合、
正しいテーブルやカラムのリストを取得できるように、それらはバックスラッシュで(Unixシェルによっては2つ)
エスケープされるべきです。‘*’と‘?’キャラクタはSQL ‘%’と‘_’ ワイルドカードキャラクタに変換されます。
これはテーブル名に‘_’を含むカラムを表示しようとした際に問題を引き起こす場合があります。
なぜなら、mysqlshowはパターンにマッチするテーブル名のみを表示するからです。
別々のアーギュメントとして‘%’をコマンドライン上で追加することで簡単に修正できます。
【データベースリスト表示】
mysql> show databases like 'te%';
+—————-+
| Database (te%) |
+—————-+
| test |
+—————-+
1 row in set (0.00 sec)
mysql>
mysql> SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
-> WHERE SCHEMA_NAME LIKE 'te%';
+————-+
| SCHEMA_NAME |
+————-+
| test |
+————-+
1 row in set (0.00 sec)
mysql>
[root@colinux]$ mysqlshow "te%" -u root -p
Enter password:
Wildcard: te%
+———–+
| Databases |
+———–+
| test |
+———–+
[root@colinux]$
mysql> select * from INFORMATION_SCHEMA.SCHEMATA;
【テーブルリスト表示】
[root@colinux]$ mysqlshow test -u root -p
Enter password:
Database: test
+—————-+
| Tables |
+—————-+
| innodb_monitor |
| innodbtable |
| rep_delay |
+—————-+
mysql> SHOW TABLES FROM test;
+—————-+
| Tables_in_test |
+—————-+
| innodb_monitor |
| innodbtable |
| rep_delay |
+—————-+
3 rows in set (0.01 sec)
mysql>
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
-> WHERE TABLE_SCHEMA = 'test';
+—————-+
| TABLE_NAME |
+—————-+
| innodb_monitor |
| innodbtable |
| rep_delay |
+—————-+
3 rows in set (0.00 sec)
mysql>
【特定のデータベースからテーブルをリスト表示】
mysql> SHOW TABLES FROM test LIKE 'r%';
+———————+
| Tables_in_test (r%) |
+———————+
| rep_delay |
+———————+
1 row in set (0.00 sec)
mysql>
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
-> WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME LIKE 'r%';
+————+
| TABLE_NAME |
+————+
| rep_delay |
+————+
1 row in set (0.00 sec)
mysql>
[root@colinux]$ mysqlshow test "r%" -u root -p
Enter password:
Database: test Wildcard: r%
+———–+
| Tables |
+———–+
| rep_delay |
+———–+
[root@colinux]$
【特定のデータベースの特定のテーブルから列を表示】
mysql> SHOW COLUMNS FROM innodbtable FROM test;
+——-+———+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——-+———+——+—–+———+——-+
| id | int(11) | YES | | NULL | |
+——-+———+——+—–+———+——-+
1 row in set (0.00 sec)
mysql>
mysql> SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE,
-> COLUMN_KEY, COLUMN_DEFAULT, EXTRA
-> FROM INFORMATION_SCHEMA.COLUMNS
-> WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'innodbtable';
+————-+———–+————-+————+—————-+——-+
| COLUMN_NAME | DATA_TYPE | IS_NULLABLE | COLUMN_KEY | COLUMN_DEFAULT | EXTRA |
+————-+———–+————-+————+—————-+——-+
| id | int | YES | | NULL | |
+————-+———–+————-+————+—————-+——-+
1 row in set (0.01 sec)
mysql>
[root@colinux]$ mysqlshow test innodbtable -u root -p
Enter password:
Database: test Table: innodbtable
+——-+———+———–+——+—–+———+——-+———————————+———+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+——-+———+———–+——+—–+———+——-+———————————+———+
| id | int(11) | | YES | | | | select,insert,update,references | |
+——-+———+———–+——+—–+———+——-+———————————+———+
[root@colinux]$
【特定のテーブルのKEYを表示する】
mysql> SHOW KEYS FROM user FROM mysql\G
*************************** 1. row ***************************
Table: user
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: Host
Collation: A
Cardinality: NULL
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
*************************** 2. row ***************************
Table: user
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 2
Column_name: User
Collation: A
Cardinality: 20
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
2 rows in set (0.00 sec)
mysql>
mysql> SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
-> WHERE TABLE_SCHEMA = 'mysql' AND TABLE_NAME = 'user'\G
*************************** 1. row ***************************
CONSTRAINT_CATALOG: NULL
CONSTRAINT_SCHEMA: mysql
CONSTRAINT_NAME: PRIMARY
TABLE_CATALOG: NULL
TABLE_SCHEMA: mysql
TABLE_NAME: user
COLUMN_NAME: Host
ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: NULL
REFERENCED_TABLE_SCHEMA: NULL
REFERENCED_TABLE_NAME: NULL
REFERENCED_COLUMN_NAME: NULL
*************************** 2. row ***************************
CONSTRAINT_CATALOG: NULL
CONSTRAINT_SCHEMA: mysql
CONSTRAINT_NAME: PRIMARY
TABLE_CATALOG: NULL
TABLE_SCHEMA: mysql
TABLE_NAME: user
COLUMN_NAME: User
ORDINAL_POSITION: 2
POSITION_IN_UNIQUE_CONSTRAINT: NULL
REFERENCED_TABLE_SCHEMA: NULL
REFERENCED_TABLE_NAME: NULL
REFERENCED_COLUMN_NAME: NULL
2 rows in set (0.00 sec)
mysql>
[root@colinux]$ mysqlshow --keys mysql user -u root -p
Enter password:
Database: mysql Table: user
[HUP….]
+——-+————+———-+————–+————-+———–+————-+———-+——–+——+————+———+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+——-+————+———-+————–+————-+———–+————-+———-+——–+——+————+———+
| user | 0 | PRIMARY | 1 | Host | A | | | | | BTREE | |
| user | 0 | PRIMARY | 2 | User | A | 20 | | | | BTREE | |
+——-+————+———-+————–+————-+———–+————-+———-+——–+——+————+———+
[root@colinux]$
【Collationの確認】
mysql> show variables like 'collat%';
mysql> select * from information_schema.character_sets;

【character set/collation組み合わせ】
COLLATION_CHARACTER_SET_APPLICABILITY テーブル
COLLATION_CHARACTER_SET_APPLICABILITY テーブルはどの文字セットがどの照合に適用
できるかを示します。カラムは SHOW COLLATION から取得する最初の 2 つの表示領域に等価です
INFORMATION_SCHEMA 名 SHOW 名
COLLATION_NAME Collation
CHARACTER_SET_NAME Charset
select * from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;

【INFORMATION_SCHEMAのテーブルリスト】
select TABLE_NAME from information_schema.TABLES
WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA';
show tables;

参考サイト
7.15. mysqlshow — データベース、テーブル、カラム情報を表示
COLLATION_CHARACTER_SET_APPLICABILITY テーブル