mysql中information_schema說明
1、說明
大家在安裝或使用MYSQL時,會發現除了自己安裝的數據庫以外,還有一個 information_schema數據庫。information_schema數據庫是MySQL自帶的,它提供了訪問數據庫元數據的方式。元數據是關於數據的數據,如數據庫名或表名,列的數據類型,或訪問權限等。有些時候用於表述該信息的其他術語包括“數據詞典”和“系統目錄”。
information_schema是信息數據庫,其中保存著關於mysql服務器所維護的所有其他數據庫的信息。在information_schema中,有數個只讀表。它們實際上是視圖,而不是基本表,因此,你將無法看到與之相關的任何文件,也就是information_schema說一個虛擬數據庫,物理上並不存在。具體看下圖:
事實上,盡管不需要生成名為information_schema的文件,我們仍提供了名為information_schema的新數據庫。可以使用USE語句將information_schema選擇為默認數據庫,但訪問該數據庫中所含表的唯一方式是使用SELECT語句。不能在其中插入內容,不能更新它們,也不能刪除其中的內容
每位MySQL用戶均有權訪問這些表,但僅限於表中的特定行,在這類行中含有用戶具有恰當訪問權限的對象
與SHOW相比,SELECT的優點
SELECT ... FROM information_schema語句的目的在於提供一種更為一致的方式,以訪問MySQL所支持的各種SHOW語句(SHOW DATABASES、SHOW TABLES等等)提供的信息。與SHOW相比,使用SELECT有多項優點“
· 符合Codd規則。也就是說,所有訪問均是在表上進行的。
· 不需要了解新語句的語法。由於他們已知道SELECT的工作方式,僅需了解對象名即可。
· 實現人無需操心增加關鍵詞方面的事宜。
· 有數百萬種可能的輸出變化,而不是一種。這樣,就為對元數據有不同需求的應用程序提供了更高的靈活性。
· 由於其他DBMS也采用了這類方式,移植更為容易。
然而,由於SHOW在MySQL的雇員和用戶中十分流行,如果SHOW消失,可能會導致混亂,因此傳統的語法方式無法給出消除SHOW的足夠理由。事實上,在MySQL 5.1中,還對SHOW進行了多項增強。關於這方面的介紹,請參見“SHOW語句的擴展
2、information_schema下的表
2.1 schemata表
schemata表提供了當前mysql實例中所有數據庫的信息。show databases的結果取之此表。該表對應的列說明如下:
列名 | 中文解釋 | 例子 |
catalog_name | ||
schema_name | 數據庫名 | |
default_character_set_name | 數據庫默認編碼 | utf8 |
default_collation_name | utf8_general_ci | |
sql_path | null |
註釋:SQL_PATH列的之總為NULL。
下述語句是等效的:
select schema_name as `database`
from information_schema.schemata
[where schema_name like ‘db_ca_ods‘]
show databases
[like ‘db_ca_ods‘]
2.2 tables表
tables表提供了關於數據庫中的表的信息(包括視圖)。詳細表述了某個表屬於哪個schema,表類型,表引擎,創建時間等信息。是show tables from db_ca_ods;【註db_ca_ods為數據庫名】的結果取之此表。
列名 | 中文解釋 | 例子/說明 |
TABLE_CATALOG | NULL | |
table_schema | 數據庫名稱 | information_schema |
table_name | 表名 | tables表,屬於information_schema數據庫 |
table_type | 表類型 | 應是BASE TABLE(基本表)或VIEW(視圖)。如果表是臨時性的,TABLE_TYPE = TEMPORARY。(沒有臨時視圖,因此,因此不存在歧義) |
engine | 表所用引擎 | InnoDB |
version |
Version |
|
row_format |
Row_format |
|
table_rows |
表中總行數 |
|
avg_row_length |
Avg_row_length |
|
data_length |
Data_length |
|
max_data_length |
Max_data_length |
|
index_length |
Index_length |
|
data_free |
Data_free |
|
auto_increment |
Auto_increment |
|
create_time |
Create_time |
|
update_time |
Update_time |
|
check_time |
Check_time |
|
table_collation |
Collation |
|
checksum |
Checksum |
|
create_options |
Create_options |
|
table_comment |
Comment |
表的說明,及create語句中comment的值 |
下述語句是等效的:
select table_name from information_schema.tables
[where table_schema = ‘db_name‘]
[where|and table_name like ‘wild‘]
show tables
[from db_name]
[like ‘wild‘]
mysql中information_schema說明