Information_Schema系统表
?
? ??information_schema數(shù)據(jù)庫(kù)是MySQL自帶的,它提供了訪問(wèn)數(shù)據(jù)庫(kù)元數(shù)據(jù)的方式。 ? ?
? ??元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),如數(shù)據(jù)庫(kù)名或表名,列的數(shù)據(jù)類型,或訪問(wèn)權(quán)限等。有些時(shí)候用于表述該信息的其他術(shù)語(yǔ)包括“數(shù)據(jù)詞典”和“系統(tǒng)目錄”。
? ??在 MySQL中,把 information_schema 看作是一個(gè)數(shù)據(jù)庫(kù),確切說(shuō)是信息數(shù)據(jù)庫(kù)。
? ??其中保存著關(guān)于MySQL服務(wù)器所維護(hù)的所有其他數(shù)據(jù)庫(kù)的信息。如數(shù)據(jù)庫(kù)名,數(shù)據(jù)庫(kù)的表,表欄的數(shù)據(jù)類型與訪問(wèn)權(quán)限等。
? ??在INFORMATION_SCHEMA中,有數(shù)個(gè)只讀表。它們實(shí)際上是視圖,不是基本表,因此,你將無(wú)法看到與之相關(guān)的任何文件。
?
?
information_schema數(shù)據(jù)庫(kù)表說(shuō)明:
?
SCHEMATA表:
????提供了當(dāng)前mysql實(shí)例中所有數(shù)據(jù)庫(kù)的信息。是show databases的結(jié)果取之此表。
TABLES表:
????提供了關(guān)于數(shù)據(jù)庫(kù)中的表的信息(包括視圖)。詳細(xì)表述了某個(gè)表屬于哪個(gè)schema,表類型,表引擎,創(chuàng)建時(shí)間等信息。是show tables from schemaname的結(jié)果取之此表。
COLUMNS表:
????提供了表中的列信息。詳細(xì)表述了某張表的所有列以及每個(gè)列的信息。是show columns from schemaname.tablename的結(jié)果取之此表。
STATISTICS表:
????提供了關(guān)于表索引的信息。是show index from schemaname.tablename的結(jié)果取之此表。
USER_PRIVILEGES(用戶權(quán)限)表:
????給出了關(guān)于全程權(quán)限的信息。該信息源自mysql.user授權(quán)表。是非標(biāo)準(zhǔn)表。
SCHEMA_PRIVILEGES(方案權(quán)限)表:
????給出了關(guān)于方案(數(shù)據(jù)庫(kù))權(quán)限的信息。該信息來(lái)自mysql.db授權(quán)表。是非標(biāo)準(zhǔn)表。
TABLE_PRIVILEGES(表權(quán)限)表:
????給出了關(guān)于表權(quán)限的信息。該信息源自mysql.tables_priv授權(quán)表。是非標(biāo)準(zhǔn)表。
COLUMN_PRIVILEGES(列權(quán)限)表:
????給出了關(guān)于列權(quán)限的信息。該信息源自mysql.columns_priv授權(quán)表。是非標(biāo)準(zhǔn)表。
CHARACTER_SETS(字符集)表:
????提供了mysql實(shí)例可用字符集的信息。是SHOW CHARACTER SET結(jié)果集取之此表。
COLLATIONS表:
????提供了關(guān)于各字符集的對(duì)照信息。
COLLATION_CHARACTER_SET_APPLICABILITY表:
????指明了可用于校對(duì)的字符集。這些列等效于SHOW COLLATION的前兩個(gè)顯示字段。
TABLE_CONSTRAINTS表:
????描述了存在約束的表。以及表的約束類型。
KEY_COLUMN_USAGE表:
????描述了具有約束的鍵列。
ROUTINES表:
????提供了關(guān)于存儲(chǔ)子程序(存儲(chǔ)程序和函數(shù))的信息。此時(shí),ROUTINES表不包含自定義函數(shù)(UDF)。名為“mysql.proc name”的列指明了對(duì)應(yīng)于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
VIEWS表:
????給出了關(guān)于數(shù)據(jù)庫(kù)中的視圖的信息。需要有show views權(quán)限,否則無(wú)法查看視圖信息。
TRIGGERS表:
????提供了關(guān)于觸發(fā)程序的信息。必須有super權(quán)限才能查看該表。
?
?
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_COLUMN_USAGE |
| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| PROFILING |
| REFERENTIAL_CONSTRAINTS |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| SESSION_STATUS |
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
| INNODB_CMP_RESET |
| INNODB_TRX |
| INNODB_CMPMEM_RESET |
| INNODB_LOCK_WAITS |
| INNODB_CMPMEM |
| INNODB_CMP |
| INNODB_LOCKS |
+---------------------------------------+
?
?
?
?
例如:
mysql> SELECT table_name, table_type, engine-> FROM information_schema.tables-> WHERE table_schema = 'db5'-> ORDER BY table_name DESC;| ?table_name(表名) | ?table_type(表類型) | ?引擎 |
| ?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 ? |
解釋:該語(yǔ)句請(qǐng)求按逆向字母順序列出數(shù)據(jù)庫(kù)db5中的所有表,但僅顯示三種信息:表名,表類型,以及表引擎。集合中含17行(0.01秒)。
INFORMATION_SCHEMA是信息數(shù)據(jù)庫(kù),其中保存著關(guān)于MySQL服務(wù)器所維護(hù)的所有其他數(shù)據(jù)庫(kù)的信息。在INFORMATION_SCHEMA中,有數(shù)個(gè)只讀表。它們實(shí)際上是視圖,而不是基本表,因此,你將無(wú)法看到與之相關(guān)的任何文件。
每位MySQL用戶均有權(quán)訪問(wèn)這些表,但僅限于表中的特定行,在這類行中含有用戶具有恰當(dāng)訪問(wèn)權(quán)限的對(duì)象。
SELECT的優(yōu)點(diǎn):
SELECT ... FROM INFORMATION_SCHEMA語(yǔ)句的目的在于提供一種更為一致的方式,以訪問(wèn)MySQL所支持的各種SHOW語(yǔ)句(SHOW DATABASES、SHOW TABLES等等)提供的信息。與SHOW相比,使用SELECT有多項(xiàng)優(yōu)點(diǎn)“
? ? 符合Codd規(guī)則。也就是說(shuō),所有訪問(wèn)均是在表上進(jìn)行的。? ? 不需要了解新語(yǔ)句的語(yǔ)法。由于他們已知道SELECT的工作方式,僅需了解對(duì)象名即可。? ? 實(shí)現(xiàn)人無(wú)需操心增加關(guān)鍵詞方面的事宜。? ? 有數(shù)百萬(wàn)種可能的輸出變化,而不是一種。這樣,就為對(duì)元數(shù)據(jù)有不同需求的應(yīng)用程序提供了更高的靈活性。? ? 由于其他DBMS也采用了這類方式,移植更為容易。
然而,由于SHOW在MySQL的雇員和用戶中十分流行,如果SHOW消失,可能會(huì)導(dǎo)致混亂,因此傳統(tǒng)的語(yǔ)法方式無(wú)法給出消除SHOW的足夠理由。事實(shí)上,在MySQL 5.1中,還對(duì)SHOW進(jìn)行了多項(xiàng)增強(qiáng)。
標(biāo)準(zhǔn):
在MySQL中,INFORMATION_SCHEMA表結(jié)構(gòu)的實(shí)施遵從“ANSI/ISO SQL:2003標(biāo)準(zhǔn),第11部分綱要。我們的目的在于,獲得與SQL:2003核心特性F021“基本信息方案”的近似兼容。
SQL服務(wù)器2000(也遵從該標(biāo)準(zhǔn))的用戶可能已注意到它們高度的相似性。但是,MySQL略去了與我們的實(shí)施方式不相關(guān)的眾多列,并添加了一些MySQL特有的列。其中一種列就是INFORMATION_SCHEMA.TABLES表中的引擎列。
盡管其他DBMS使用了不同的名稱,如syscat或系統(tǒng),但標(biāo)準(zhǔn)名稱是INFORMATION_SCHEMA。
事實(shí)上,盡管不需要生成名為INFORMATION_SCHEMA的文件,我們?nèi)蕴峁┝嗣麨镮NFORMATION_SCHEMA的新數(shù)據(jù)庫(kù)。可以使用USE語(yǔ)句將INFORMATION_SCHEMA選擇為默認(rèn)數(shù)據(jù)庫(kù),但訪問(wèn)該數(shù)據(jù)庫(kù)中所含表的唯一方式是使用SELECT語(yǔ)句。不能在其中插入內(nèi)容,不能更新它們,也不能刪除其中的內(nèi)容。
權(quán)限:
當(dāng)前權(quán)限(SHOW)要求和SELCET權(quán)限要求不存在差別。在任何一種情況下,要想查看關(guān)于它的信息,需要對(duì)某類對(duì)象擁有特定權(quán)限。
?
我們選擇INFORMATION_SCHEMA中的表和列。對(duì)于每一列,有三類信息:
? ? “標(biāo)準(zhǔn)名稱”:指明了列的標(biāo)準(zhǔn)SQL名稱。 ? ? “SHOW 名稱”:指明了最近SHOW語(yǔ)句中的等效字段名,如果有的話。? ? “注釋”給出了適用的附加信息。
為了避免使用標(biāo)準(zhǔn)或DB2、SQL服務(wù)器或Oracle中保留的名稱,我們更改了標(biāo)注為“SQL擴(kuò)展”的列名。(例如,在TABLES表中,我們將COLLATION改為TABLE_COLLATION)。請(qǐng)參見(jiàn)本文末尾處給出的保留字列表。
字符列(例如TABLES.TABLE_NAME)定義通常是VARCHAR(N) CHARACTER SET utf8,其中,N至少為64。
在每一部分中,指明了等效于從INFORMATION_SCHEMA中檢索信息的SELECT語(yǔ)句的SHOW語(yǔ)句,或者不存在這類語(yǔ)句。
注釋:目前,有一些丟失的列和一些混亂的列。我們正在著手解決該問(wèn)題,并隨著變化情況更新文檔。
?
?
?
?
?
INFORMATION_SCHEMA SCHEMATA表
該方案是數(shù)據(jù)庫(kù),因此SCHEMATA表提供了關(guān)于數(shù)據(jù)庫(kù)的信息。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| CATALOG_NAME | - | NULL |
| SCHEMA_NAME | ? | Database |
| DEFAULT_CHARACTER_SET_NAME | ? | ? |
| DEFAULT_COLLATION_NAME | ? | ? |
| SQL_PATH | ? | NULL |
注釋:SQL_PATH列的之總為NULL。
下述語(yǔ)句是等效的:
SELECT SCHEMA_NAME AS `DatabaseFROM INFORMATION_SCHEMA.SCHEMATA[WHERE SCHEMA_NAME LIKE 'wild']?SHOW DATABASES[LIKE 'wild']?
INFORMATION_SCHEMA TABLES表
TABLES表給出了關(guān)于數(shù)據(jù)庫(kù)中的表的信息。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| TABLE_CATALOG | ? | NULL |
| TABLE_SCHEMA | Table_... | ? |
| TABLE_NAME | Table_... | ? |
| TABLE_TYPE | ? | ? |
| ENGINE | Engine | MySQL擴(kuò)展 |
| VERSION | Version | MySQL擴(kuò)展 |
| ROW_FORMAT | Row_format | MySQL擴(kuò)展 |
| TABLE_ROWS | Rows | MySQL擴(kuò)展 |
| AVG_ROW_LENGTH | Avg_row_length | MySQL擴(kuò)展 |
| DATA_LENGTH | Data_length | MySQL擴(kuò)展 |
| MAX_DATA_LENGTH | Max_data_length | MySQL擴(kuò)展 |
| INDEX_LENGTH | Index_length | MySQL擴(kuò)展 |
| DATA_FREE | Data_free | MySQL擴(kuò)展 |
| AUTO_INCREMENT | Auto_increment | MySQL擴(kuò)展 |
| CREATE_TIME | Create_time | MySQL擴(kuò)展 |
| UPDATE_TIME | Update_time | MySQL擴(kuò)展 |
| CHECK_TIME | Check_time | MySQL擴(kuò)展 |
| TABLE_COLLATION | Collation | MySQL擴(kuò)展 |
| CHECKSUM | Checksum | MySQL擴(kuò)展 |
| CREATE_OPTIONS | Create_options | MySQL擴(kuò)展 |
| TABLE_COMMENT | Comment | MySQL擴(kuò)展 |
注釋:
? ? TABLE_SCHEMA和TABLE_NAME是SHOW顯示中的單個(gè)字段,例如Table_in_db1。
? ? TABLE_TYPE(表類型)應(yīng)是BASE TABLE(基本表)或VIEW(視圖)。如果表是臨時(shí)性的,TABLE_TYPE?=?TEMPORARY。(沒(méi)有臨時(shí)視圖,因此,因此不存在歧義)。
? ? 如果表位于INFORMATION_SCHEMA數(shù)據(jù)庫(kù)中,TABLE_ROWS列為NULL。對(duì)于InnoDB表,在SQL優(yōu)化中,行計(jì)數(shù)僅是大概估計(jì)值。
? ? 沒(méi)有關(guān)于表默認(rèn)字符集的任何信息。TABLE_COLLATION處于關(guān)閉狀態(tài),原因在于校對(duì)名稱以字符集名稱開(kāi)頭。
下述語(yǔ)句是等效的:
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']?
INFORMATION_SCHEMA COLUMNS表
COLUMNS表給出了表中的列信息。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| TABLE_CATALOG | ? | NULL |
| TABLE_SCHEMA | ? | ? |
| TABLE_NAME | ? | ? |
| COLUMN_NAME | Field | ? |
| ORDINAL_POSITION | ? | 參見(jiàn)注釋 |
| 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擴(kuò)展 |
| COLUMN_KEY | Key | MySQL擴(kuò)展 |
| EXTRA | Extra | MySQL擴(kuò)展 |
| COLUMN_COMMENT | Comment | MySQL擴(kuò)展 |
注釋:
? ? 在SHOW中,類型顯示包括來(lái)自數(shù)個(gè)不同COLUMNS列的值。
? ? ORDINAL_POSITION有必要,這是因?yàn)?#xff0c;你可能會(huì)在某一天需要ORDER BY ORDINAL_POSITION(按ORDINAL_POSITION排序)。不同于SHOW,SELECT沒(méi)有自動(dòng)排序功能。
? ? CHARACTER_OCTET_LENGTH應(yīng)與CHARACTER_MAXIMUM_LENGTH相同,但多字節(jié)字符集除外。
? ? CHARACTER_SET_NAME可由Collation(校對(duì))導(dǎo)出。例如,如果給出了“SHOW FULL COLUMNS FROM t”,在Collation(校對(duì))列中將見(jiàn)到latin1_swedish_ci的值,字符集由第1個(gè)下劃線前的名稱指明。latin1.
下述語(yǔ)句是等效的:
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 ?FROM tbl_name? [FROM db_name]? [LIKE wild]?
INFORMATION_SCHEMA STATISTICS表
STATISTICS表給出了關(guān)于表索引的信息。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| TABLE_CATALOG | ? | NULL |
| TABLE_SCHEMA | ? | =數(shù)據(jù)庫(kù) |
| TABLE_NAME | Table | ? |
| NON_UNIQUE | Non_unique | ? |
| INDEX_SCHEMA | ? | =數(shù)據(jù)庫(kù) |
| INDEX_NAME | Key_name | ? |
| SEQ_IN_INDEX | Seq_in_index | ? |
| COLUMN_NAME | Column_name | ? |
| COLLATION | Collation | ? |
| CARDINALITY | Cardinality | ? |
| SUB_PART | Sub_part | MySQL擴(kuò)展 |
| PACKED | Packed | MySQL擴(kuò)展 |
| NULLABLE | Null | MySQL擴(kuò)展 |
| INDEX_TYPE | Index_type | MySQL擴(kuò)展 |
| COMMENT | Comment | MySQL擴(kuò)展 |
注釋:
? ? 沒(méi)有關(guān)于這些索引的標(biāo)準(zhǔn)表。上面的列表與SQL服務(wù)器2000中sp_statistics返回的值類似。不同之處在于用CATALOG替換了QUALIFIER,并用SCHEMA替換了OWNER。
顯而易見(jiàn),前述表和SHOW INDEX的輸出均是由相同的父對(duì)象導(dǎo)出的。因此,相關(guān)性已關(guān)閉。
下述語(yǔ)句是等效的:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS? WHERE table_name = 'tbl_name' ?[AND table_schema = 'db_name']SHOW INDEX ?FROM tbl_name? [FROM db_name]?
INFORMATION_SCHEMA USER_PRIVILEGES表
USER_PRIVILEGES(用戶權(quán)限)表給出了關(guān)于全程權(quán)限的信息。該信息源自mysql.user授權(quán)表。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| GRANTEE | ? | 例如“user'@'host” |
| TABLE_CATALOG | ? | NULL |
| PRIVILEGE_TYPE | ? | ? |
| IS_GRANTABLE | ? | ? |
注釋:
? ? 這是一個(gè)非標(biāo)準(zhǔn)表。其值來(lái)自mysql.user表。
?
INFORMATION_SCHEMA SCHEMA_PRIVILEGES表
SCHEMA_PRIVILEGES(方案權(quán)限)表給出了關(guān)于方案(數(shù)據(jù)庫(kù))權(quán)限的信息。該信息來(lái)自mysql.db授權(quán)表。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| GRANTEE | ? | 例如“user'@'host” |
| TABLE_CATALOG | ? | NULL |
| TABLE_SCHEMA | ? | ? |
| PRIVILEGE_TYPE | ? | ? |
| IS_GRANTABLE | ? | ? |
注釋:
? ? 這是一個(gè)非標(biāo)準(zhǔn)表。其值來(lái)自mysql.db表。
?
INFORMATION_SCHEMA TABLE_PRIVILEGES表
TABLE_PRIVILEGES(表權(quán)限)表給出了關(guān)于表權(quán)限的信息。該信息源自mysql.tables_priv授權(quán)表。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| GRANTEE | ? | 例如“user'@'host” |
| TABLE_CATALOG | ? | NULL |
| TABLE_SCHEMA | ? | ? |
| TABLE_NAME | ? | ? |
| PRIVILEGE_TYPE | ? | ? |
| IS_GRANTABLE | ? | ? |
下述語(yǔ)句不等效:
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGESSHOW GRANTS ...PRIVILEGE_TYPE可以包含這些值之一(僅能一個(gè)):SELECT、INSERT、UPDATE、REFERENCES、ALTER、INDEX、DROP、CREATE VIEW。
?
INFORMATION_SCHEMA COLUMN_PRIVILEGES表
COLUMN_PRIVILEGES(列權(quán)限)表給出了關(guān)于列權(quán)限的信息。該信息源自mysql.columns_priv授權(quán)表。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| GRANTEE | ? | 例如“user'@'host” |
| TABLE_CATALOG | ? | NULL |
| TABLE_SCHEMA | ? | ? |
| TABLE_NAME | ? | ? |
| COLUMN_NAME | ? | ? |
| PRIVILEGE_TYPE | ? | ? |
| IS_GRANTABLE | ? | ? |
注釋:
? ? 在SHOW FULL COLUMNS(顯示完整列)的輸出中,權(quán)限值位于一個(gè)字段并采用小寫形式,例如select、insert、update、references。在COLUMN_PRIVILEGES中,每種權(quán)限占一行,并為大寫形式。
? ? PRIVILEGE_TYPE可以包含這些值之一(僅能一個(gè)):SELECT,?INSERT,?UPDATE,?REFERENCES.
? ? 如果用戶有GRANT OPTION權(quán)限,那么IS_GRANTABLE應(yīng)為YES。否則,IS_GRANTABLE應(yīng)為NO。在輸出中,不會(huì)將GRANT OPTION作為單獨(dú)權(quán)限列出。
下述語(yǔ)句不等效:
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGESSHOW GRANTS ...?
INFORMATION_SCHEMA CHARACTER_SETS表
CHARACTER_SETS(字符集)表提供了關(guān)于可用字符集的信息。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| CHARACTER_SET_NAME | Charset | ? |
| DEFAULT_COLLATE_NAME | Default collation | ? |
| DESCRIPION | Description | MySQL擴(kuò)展 |
| MAXLEN | Maxlen | MySQL擴(kuò)展 |
注釋:
? ? 我們?cè)黾恿藘蓚€(gè)非標(biāo)準(zhǔn)列,分別對(duì)應(yīng)于SHOW CHARACTER SET輸出的Description(描述)和Maxlen(最大長(zhǎng)度)列。
下述語(yǔ)句是等效的:
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS? [WHERE name LIKE 'wild']SHOW CHARACTER SET? [LIKE 'wild']?
INFORMATION_SCHEMA COLLATIONS表
COLLATIONS表提供了關(guān)于各字符集的對(duì)照信息。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| COLLATION_NAME | Collation | ? |
注釋:
? ? 我們?cè)黾恿?個(gè)非標(biāo)準(zhǔn)列,分別對(duì)應(yīng)于SHOW COLLATION輸出的Charset、Id、Default、Compiled和Sortlen列。
下述語(yǔ)句是等效的:
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS? [WHERE collation_name LIKE 'wild']SHOW COLLATION? [LIKE 'wild']?
INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表
COLLATION_CHARACTER_SET_APPLICABILITY表指明了可用于校對(duì)的字符集。這些列等效于SHOW COLLATION的前兩個(gè)顯示字段。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| COLLATION_NAME | Collation | ? |
| CHARACTER_SET_NAME | Charset | ? |
?
INFORMATION_SCHEMA TABLE_CONSTRAINTS表
TABLE_CONSTRAINTS表描述了存在約束的表。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| CONSTRAINT_CATALOG | ? | NULL |
| CONSTRAINT_SCHEMA | ? | ? |
| CONSTRAINT_NAME | ? | ? |
| TABLE_SCHEMA | ? | ? |
| TABLE_NAME | ? | ? |
| CONSTRAINT_TYPE | ? | ? |
注釋:
? ? CONSTRAINT_TYPE的值可以是UNIQUE(唯一)、PRIMARY KEY(主鍵)或FOREIGN KEY(外鍵)。
? ? 當(dāng)Non_unique字段為0時(shí),UNIQUE和PRIMARY KEY信息與SHOW INDEX輸出的Key_name字段中給出的信息基本相同。
? ? CONSTRAINT_TYPE列可包含下述值之一:UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK。這是一個(gè)CHAR(非ENUM)列。在我們支持CHECK前,CHECK值不可用。
?
INFORMATION_SCHEMA KEY_COLUMN_USAGE表
KEY_COLUMN_USAGE表描述了具有約束的鍵列。
| 標(biāo)準(zhǔn)名稱 | 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開(kāi)始的數(shù)值編號(hào)。
? ? 對(duì)于“唯一”和“主鍵”約束,POSITION_IN_UNIQUE_CONSTRAINT的值為NULL。對(duì)于“外鍵”約束,它是所引用表內(nèi)鍵中的順序位置。
例如,假定有兩個(gè)具有下述定義的表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;對(duì)于這兩個(gè)表,KEY_COLUMN_USAGE表有兩行:
? ? 一行含有CONSTRAINT_NAME='PRIMARY',?TABLE_NAME='t1',?COLUMN_NAME='s3',ORDINAL_POSITION=1,?POSITION_IN_UNIQUE_CONSTRAINT=NULL。
? ? 另一行含有CONSTRAINT_NAME='CO',?TABLE_NAME='t3',?COLUMN_NAME='s2',ORDINAL_POSITION=1,?POSITION_IN_UNIQUE_CONSTRAINT=1。
?
INFORMATION_SCHEMA ROUTINES表
ROUTINES表提供了關(guān)于存儲(chǔ)子程序(存儲(chǔ)程序和函數(shù))的信息。此時(shí),ROUTINES表不包含自定義函數(shù)(UDF)。
名為“mysql.proc?name”的列指明了對(duì)應(yīng)于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列,如果有的話。
| 標(biāo)準(zhǔn)名稱 | mysql.proc名 | 注釋 |
| SPECIFIC_NAME | specific_name | ? |
| ROUTINE_CATALOG | ? | NULL |
| ROUTINE_SCHEMA | db | ? |
| ROUTINE_NAME | name | ? |
| ROUTINE_TYPE | type | {PROCEDURE|FUNCTION} |
| DTD_IDENTIFIER | ? | (數(shù)據(jù)類型描述符) |
| 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擴(kuò)展 |
| ROUTINE_COMMENT | comment | MySQL擴(kuò)展 |
| DEFINER | definer | MySQL擴(kuò)展 |
注釋:
? ? MySQL計(jì)算EXTERNAL_LANGUAGE,因此:
? ? 如果mysql.proc.language='SQL',那么EXTERNAL_LANGUAGE為NULL。
? ? 否則,EXTERNAL_LANGUAGE為mysql.proc.language中的值。然而,由于尚沒(méi)有外部語(yǔ)言,因此該值總為NULL。
?
INFORMATION_SCHEMA VIEWS表
VIEWS表給出了關(guān)于數(shù)據(jù)庫(kù)中的視圖的信息。
| 標(biāo)準(zhǔn)名稱 | SHOW名稱 | 注釋 |
| TABLE_CATALOG | ? | NULL |
| TABLE_SCHEMA | ? | ? |
| TABLE_NAME | ? | ? |
| VIEW_DEFINITION | ? | ? |
| CHECK_OPTION | ? | ? |
| IS_UPDATABLE | ? | ? |
| DEFINER | ? | ? |
| SECURITY_TYPE | ? | ? |
注釋:
? ? 有一種新的權(quán)限SHOW VIEW,如果沒(méi)有它,將無(wú)法看到VIEWS表。
? ? VIEW_DEFINITION列含有你在SHOW CREATE VIEW所生成的Create Table字段中見(jiàn)到的大多數(shù)信息。跳過(guò)SELECT前的單詞,并跳過(guò)具有CHECK OPTION(檢查選項(xiàng))的單詞。例如,如果初始語(yǔ)句是:
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,如果視圖是不可更新的,IS_UPDATABLE列的值為NO。
? ? DEFINER列指明了定義視圖的人。SECURITY_TYPE的值為DEFINER或INVOKER。
?
INFORMATION_SCHEMA TRIGGERS表
TRIGGERS表提供了關(guān)于觸發(fā)程序的信息。
必須有SUPER權(quán)限才能查看該表。
| 標(biāo)準(zhǔn)名稱 | 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 | ? | ? |
注釋:
? ? TRIGGER_SCHEMA和TRIGGER_NAME列中分別含有相應(yīng)數(shù)據(jù)庫(kù)的名稱以及觸發(fā)程序的名稱,在該數(shù)據(jù)庫(kù)中,含有該觸發(fā)程序。
? ? EVENT_MANIPULATION列含有下述值之一:INSERT、DELETE、或UPDATE。
? ? 每個(gè)觸發(fā)程序均與一個(gè)表準(zhǔn)確相關(guān)。EVENT_OBJECT_SCHEMA和EVENT_OBJECT_TABLE列包含相應(yīng)的數(shù)據(jù)庫(kù)和表名,在該數(shù)據(jù)庫(kù)中,含有該表。
? ? ACTION_ORDER語(yǔ)句含有觸發(fā)程序動(dòng)作(在相同表上所有類似觸發(fā)程序列表中)的順序位置。目前該值總為0,這是因?yàn)樵谙嗤砩暇哂邢嗤珽VENT_MANIPULATION和ACTION_TIMING的觸發(fā)程序不能超過(guò)1個(gè)。
? ? ACTION_STATEMENT列含有激活了觸發(fā)程序時(shí)將要執(zhí)行的語(yǔ)句。這與SHOW TRIGGERS輸出的Statement(語(yǔ)句)列中顯示的文本相同。注意,該文本采用了UTF-8編碼方式。
? ? ACTION_ORIENTATION列總含有值“ROW”。
? ? ACTION_TIMING列含有下述兩種值之一:“BEFORE”或“AFTER”。
? ? 列ACTION_REFERENCE_OLD_ROW和ACTION_REFERENCE_NEW_ROW分別含有舊的和新的列標(biāo)識(shí)符。這意味著ACTION_REFERENCE_OLD_ROW總含有值“OLD”,ACTION_REFERENCE_NEW_ROW總含有值“NEW”。
? ? SQL_MODE列顯示了創(chuàng)建觸發(fā)程序時(shí)有效的服務(wù)器SQL模式(無(wú)論當(dāng)前的服務(wù)器SQL模式為何,只要激活了觸發(fā)程序,它將保持有效)。該列的可能取值范圍與sql_mode系統(tǒng)變量的取值范圍相同。請(qǐng)參見(jiàn)5.3.2節(jié),“SQL服務(wù)器模式”。
? ? 在下述列中,目前總含有NULL:TRIGGER_CATALOG,EVENT_OBJECT_CATALOG,ACTION_CONDITION,ACTION_REFERENCE_OLD_TABLE,ACTION_REFERENCE_NEW_TABLE和CREATED。
例如,使用觸發(fā)器中定義的觸發(fā)程序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: NULL1 row in set (1.54 sec)?
其他INFORMATION_SCHEMA表
? ??我們打算實(shí)施附加的INFORMATION_SCHEMA表。尤其是,我們確認(rèn)了對(duì)INFORMATION_SCHEMA.PARAMETERS和INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS的需求。 ? ?? ?
?
SHOW語(yǔ)句的擴(kuò)展
某些SHOW語(yǔ)句的擴(kuò)展伴隨著INFORMATION_SCHEMA的實(shí)施:
? ? SHOW可用于獲取關(guān)于INFORMATION_SCHEMA本身結(jié)構(gòu)的信息。
? ? 一些SHOW語(yǔ)句允許使用WHERE子句,這樣,在指定需要顯示的行時(shí),可更為靈活。
INFORMATION_SCHEMA是一種信息數(shù)據(jù)庫(kù),因此,在SHOW DATABASES的輸出中,包含其名稱。與此類似,SHOW TABLES可與INFORMATION_SCHEMA一起使用,以獲取表清單。
mysql> SHOW TABLES FROM INFORMATION_SCHEMA;+---------------------------------------+| Tables_in_information_schema|+---------------------------------------+| SCHEMATA|| TABLES|| COLUMNS || CHARACTER_SETS || COLLATIONS? || COLLATION_CHARACTER_SET_APPLICABILITY || ROUTINES|| STATISTICS? || VIEWS || TRIGGERS|| USER_PRIVILEGES|| SCHEMA_PRIVILEGES? || TABLE_PRIVILEGES|| COLUMN_PRIVILEGES? || TABLE_CONSTRAINTS? || KEY_COLUMN_USAGE|+---------------------------------------+SHOW COLUMNS和DESCRIBE能夠顯示單獨(dú)INFORMATION_SCHEMA表中的列信息。
擴(kuò)展了一些SHOW語(yǔ)句,允許使用WHERE子句:
SHOW CHARACTER SETSHOW COLLATIONSHOW COLUMNSSHOW DATABASESSHOW FUNCTION STATUSSHOW KEYSSHOW OPEN TABLESSHOW PROCEDURE STATUSSHOW STATUSSHOW TABLE STATUSSHOW TABLESSHOW VARIABLES如果有WHERE子句的話,將根據(jù)SHOW語(yǔ)句顯示的列名進(jìn)行計(jì)算。例如,SHOW COLLATION語(yǔ)句可產(chǎn)生這些輸出列:
例如,SHOW CHARACTER SET語(yǔ)句可產(chǎn)生這些輸出列:
mysql> SHOW CHARACTER SET;| Charset | 描述 | 默認(rèn)校對(duì) | 最大長(zhǎng)度 |
| ?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 |
要想與SHOW CHARACTER SET一起使用WHERE子句,應(yīng)引用這些列名稱。例如,在下面的語(yǔ)句中,給出了用于默認(rèn)校對(duì)且含有字符串“japanese”的字符集的信息:
mysql> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';| ?Charset | ?描述?? | 默認(rèn)校對(duì) | 最大長(zhǎng)度 |
| ?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 |
該語(yǔ)句顯示了多字節(jié)字符集。
mysql> SHOW CHARACTER SET WHERE Maxlen > 1;| ?Charset | ?描述? | 默認(rèn)校對(duì) | 最大長(zhǎng)度 |
| ?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 |
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/magina/p/4974209.html
總結(jié)
以上是生活随笔為你收集整理的Information_Schema系统表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 十大排序算法图解
- 下一篇: Win10系统中英文切换