Mysql 元數據庫 information_schema
information_schema是一個元數據庫。它就像物業公司的信息庫,對管理的每棟大廈有多少電梯、電梯型號、每個房間的長寬高等等瞭如指掌。
常見的元信息表
- SCHEMATA
提供數據庫信息,有哪些數據庫,字符集是GBK還是UTF-8等等。常用字段:
字段名 |
含義 |
備註 |
SCHEMA_NAME |
數據庫名 |
|
DEFAULT_CHARACTER_SET_NAME |
字符集 |
|
DEFAULT_COLLATION_NAME |
排序規則 |
|
- TABLES
提供表的信息,數據庫有哪些表,是什麼存儲引擎等等。常用字段:
字段名 |
含義 |
備註 |
SCHEMA_NAME |
數據庫名 |
|
TABLE_NAME |
表名 |
|
TABLE_TYPE |
表的類型 |
類型有BASE TABLE、VIEW、SYSTEM VIEW |
ENGINE |
存儲引擎 |
|
CREATE_TIME |
建表時間 |
|
- COLUMNS
提供字段的信息,有哪些字段字段類型是什麼等等。常用字段:
字段名 |
含義 |
備註 |
SCHEMA_NAME |
數據庫名 |
|
TABLE_NAME |
表名 |
|
COLUMN_NAME |
字段名 |
|
COLUMN_TYPE |
字段類型 |
如int(10),varchar(250) |
等同命令:SHOW COLUMNS 或者 desc tctest.emp 看emp表的具體字段。
- STATISTICS
這張表的單詞是統計的意思,但是卻是索引的信息,真奇怪。常用字段:
字段名 |
含義 |
備註 |
SCHEMA_NAME |
數據庫名 |
|
TABLE_NAME |
表名 |
|
INDEX_SCHEMA |
也是數據庫名 |
|
INDEX_NAME |
索引名 |
|
COLUMN_NAME |
字段名 |
|
INDEX_TYPE |
索引類型 |
一般是BTREE |
等同命令:SHOW INDEX
- TABLE_CONSTRAINTS
提供約束情況,我們想看看錶有哪些約束?約束指的是唯一性約束、主鍵約束、外鍵約束。常用字段:
字段名 |
含義 |
備註 |
CONSTRAINT_SCHEMA |
數據庫名 |
|
CONSTRAINT_NAME |
約束名 |
|
TABLE_SCHEMA |
也是數據庫名 |
|
TABLE_NAME |
表名 |
|
CONSTRAINT_TYPE |
約束類型 |
UNIQUE、PRIMARY KEY、FOREIGN KEY |
唯一約束和主鍵約束,我們在前面的索引中一樣可以查到。
- KEY_COLUMN_USAGE
有STATISTICS和TABLE_CONSTRAINTS表,爲什麼還需要KEY_COLUMN_USAGE?
因爲外鍵時沒有指出參考的是哪張表的哪個字段!常用字段:
字段名 |
含義 |
備註 |
CONSTRAINT_SCHEMA |
數據庫名 |
|
CONSTRAINT_NAME |
約束名 |
PRIMARY或列名或外鍵名 |
TABLE_SCHEMA |
也是數據庫名 |
|
TABLE_NAME |
表名 |
|
COLUMN_NAME |
列名 |
|
REFERENCED_TABLE_SCHEMA |
參考的數據庫 |
|
REFERENCED_TABLE_NAME |
參考的表 |
|
REFERENCED_COLUMN_NAME |
參考的列 |
|
相比前面兩個,KEY_COLUMN_USAGE這個表的信息是最全的。包括主鍵、外鍵、唯一約束。
- ROUTINES
routines是程序的意思,在MySQL當然指的是函數和存儲過程
字段名 |
含義 |
備註 |
SPECIFIC_NAME |
程序名 |
|
ROUTINE_SCHEMA |
數據庫名 |
|
ROUTINE_NAME |
程序名 |
|
ROUTINE_TYPE |
程序類型 |
PROCEDURE或FUNCTION |
ROUTINE_BODY |
函數體 |
好像都是SQL |
ROUTINE_DEFINITION |
具體的程序語句 |
|
- VIEWS
查詢數據庫下所有的視圖
字段名 |
含義 |
備註 |
TABLE_SCHEMA |
數據庫名 |
|
TABLE_NAME |
表名 |
|
VIEW_DEFINITION |
視圖定義語句 |
|
- TRIGGERS
查詢所有的觸發器
字段名 |
含義 |
備註 |
TRIGGER_SCHEMA |
數據庫名 |
|
TRIGGER_NAME |
觸發器名 |
|
EVENT_OBJECT_SCHEMA |
觸發的數據庫 |
|
EVENT_OBJECT_TABLE |
觸發的表 |
|
ACTION_STATEMENT |
觸發的語句 |
|
ACTION_TIMING |
觸發時機 |
BEFORE或AFTER |