MySQL的information_schema資料庫表說明及用法舉例

chenfeng發表於2016-12-08
information_schema資料庫表說明:
SCHEMATA表:提供了當前mysql例項中所有資料庫的資訊。是show databases的結果取之此表。
TABLES表:提供了關於資料庫中的表的資訊(包括檢視)。詳細表述了某個表屬於哪個schema,表型別,表引擎,建立時間等資訊。是show tables from schemaname的結果取之此表。
COLUMNS表:提供了表中的列資訊。詳細表述了某張表的所有列以及每個列的資訊。是show columns from schemaname.tablename的結果取之此表。
STATISTICS表:提供了關於表索引的資訊。是show index from schemaname.tablename的結果取之此表。
USER_PRIVILEGES(使用者許可權)表:給出了關於全程許可權的資訊。該資訊源自mysql.user授權表。是非標準表。
SCHEMA_PRIVILEGES(方案許可權)表:給出了關於方案(資料庫)許可權的資訊。該資訊來自mysql.db授權表。是非標準表。
TABLE_PRIVILEGES(表許可權)表:給出了關於表許可權的資訊。該資訊源自mysql.tables_priv授權表。是非標準表。
COLUMN_PRIVILEGES(列許可權)表:給出了關於列許可權的資訊。該資訊源自mysql.columns_priv授權表。是非標準表。
CHARACTER_SETS(字符集)表:提供了mysql例項可用字符集的資訊。是SHOW CHARACTER SET結果集取之此表。
COLLATIONS表:提供了關於各字符集的對照資訊。
COLLATION_CHARACTER_SET_APPLICABILITY表:指明瞭可用於校對的字符集。這些列等效於SHOW COLLATION的前兩個顯示欄位。
TABLE_CONSTRAINTS表:描述了存在約束的表。以及表的約束型別。
KEY_COLUMN_USAGE表:描述了具有約束的鍵列。
ROUTINES表:提供了關於儲存子程式(儲存程式和函式)的資訊。此時,ROUTINES表不包含自定義函式(UDF)。名為“mysql.proc name”的列指明瞭對應於INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
VIEWS表:給出了關於資料庫中的檢視的資訊。需要有show views許可權,否則無法檢視檢視資訊。
TRIGGERS表:提供了關於觸發程式的資訊。必須有super許可權才能檢視該表


以下是具體示例:
MySQL檢視某個欄位在哪個資料庫的哪張表中:
mysql> use information_schema;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed


例如查APPLY_ID欄位在哪個資料庫的哪張表裡:

mysql> select TABLE_SCHEMA,TABLE_NAME from COLUMNS where COLUMN_NAME='APPLY_ID';
+----------------------+------------+
| TABLE_SCHEMA         | TABLE_NAME |
+----------------------+------------+
| ixinnuo_financial    | f_apply    |
| ixinnuo_financial-_T | f_apply    |
| test                 | f_apply    |
+----------------------+------------+
3 rows in set (0.06 sec)

MySQL查詢某張表在哪個資料庫裡:
例如檢視t_zcfzb表在哪個資料庫裡:
mysql> select TABLE_SCHEMA from tables where table_name='t_zcfzb';
+----------------------+
| TABLE_SCHEMA         |
+----------------------+
| ixinnuo_financial    |
| ixinnuo_financial-_T |
| test                 |
+----------------------+
3 rows in set (0.00 sec)
結果顯示t_zcfzb在三個資料裡都有.

查詢MySQL中某個資料庫中有多少張表:
例如檢視test資料庫:
mysql> SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES   WHERE table_schema = 'test' GROUP BY table_schema;
+--------+--------------+
| TABLES | table_schema |
+--------+--------------+
|     34 | test         |
+--------+--------------+
1 row in set (0.00 sec)

查詢MySQL中某個資料庫中某個表裡有多少列:
例如:
mysql> select count(*) from columns where TABLE_NAME='t_zcfzb' and TABLE_SCHEMA='test';
+----------+
| count(*) |
+----------+
|       13 |
+----------+
1 row in set (0.00 sec)

結果顯示test庫裡t_zcfzb表有13列.




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2130050/,如需轉載,請註明出處,否則將追究法律責任。

相關文章