MySQL元數(shù)據(jù)有哪些

本篇內(nèi)容主要講解“MySQL元數(shù)據(jù)有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“MySQL元數(shù)據(jù)有哪些”吧!

成都創(chuàng)新互聯(lián)長(zhǎng)期為超過(guò)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為任縣企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,任縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

1. MySQL元數(shù)據(jù)

1.1.       元數(shù)據(jù)訪問(wèn)方法

數(shù)據(jù)庫(kù)是數(shù)據(jù)的結(jié)構(gòu)化集合。元數(shù)據(jù)是“有關(guān)數(shù)據(jù)的數(shù)據(jù)”。MySQL 通過(guò)以下方法提供對(duì)元數(shù)據(jù)的訪問(wèn):

INFORMATION_SCHEMA:MySQL 服務(wù)器包含一個(gè)名為INFORMATION_SCHEMA 的數(shù)據(jù)庫(kù)(模式)的數(shù)據(jù)字典,其中包含許多顯示為表的對(duì)象。

SHOW 語(yǔ)句:用于獲取服務(wù)器統(tǒng)計(jì)信息、模式和模式對(duì)象的相關(guān)數(shù)據(jù)的專用語(yǔ)法。 SHOW DATABASES 和SHOW TABLES返回包含數(shù)據(jù)庫(kù)和表名的列表;SHOW COLUMNS生成表中列的定義;使用SHOW 語(yǔ)句需要有SELECT權(quán)限。

DESCRIBE:可用于查詢表結(jié)構(gòu)和列屬性的SQL 語(yǔ)句快捷方式

mysqlshow:用作指向一些SHOW 語(yǔ)句的命令行命令。您設(shè)置的參數(shù)將決定要顯示的信息,然后程序會(huì)發(fā)出相應(yīng)的SHOW 語(yǔ)句并顯示語(yǔ)句的結(jié)果。

下面將詳細(xì)介紹這4中訪問(wèn)元數(shù)據(jù)的方法。

1.2.       INFORMATION_SCHEMA 數(shù)據(jù)庫(kù)

INFORMATION_SCHEMA 數(shù)據(jù)庫(kù)充當(dāng)數(shù)據(jù)庫(kù)元數(shù)據(jù)的中央系統(tǒng)信息庫(kù),包含模式和模式對(duì)象、服務(wù)器統(tǒng)計(jì)信息(狀態(tài)變量、設(shè)置、連接)。它未存儲(chǔ)在硬盤上,從這個(gè)方面來(lái)看,它是“虛擬數(shù)據(jù)庫(kù)”;但是,它與其他任何數(shù)據(jù)庫(kù)一樣包含表,與其他任何表一樣可以使用SELECT 來(lái)訪問(wèn)其中表的內(nèi)容

1)       查詢INFORMATION_SCHEMA 中的表

mysql> SELECT TABLE_NAME

-> FROM INFORMATION_SCHEMA.TABLES

-> WHERE TABLE_SCHEMA = 'information_schema'

-> ORDER BY TABLE_NAME;

INFORMATION_SCHEMA 表包含以下類型的信息:

?  表信息

COLUMNS:表和視圖中的列

ENGINES:存儲(chǔ)引擎

SCHEMATA:數(shù)據(jù)庫(kù)

TABLES:數(shù)據(jù)庫(kù)中的表

VIEWS:數(shù)據(jù)庫(kù)中的視圖

?  分區(qū)

PARTITIONS:表分區(qū)

FILES:存儲(chǔ)MySQL NDB 磁盤數(shù)據(jù)表的文件

?  權(quán)限

COLUMN_PRIVILEGES:MySQL 用戶帳戶所擁有的列權(quán)限

SCHEMA_PRIVILEGES:MySQL 用戶帳戶所擁有的數(shù)據(jù)庫(kù)權(quán)限

TABLE_PRIVILEGES:MySQL 用戶帳戶所擁有的表權(quán)限

USER_PRIVILEGES:MySQL 用戶帳戶所擁有的全局權(quán)限

?  字符集支持

CHARACTER_SETS:可用的字符集

COLLATIONS:每個(gè)字符集的整理

COLLATION_CHARACTER_SET_APPLICABILITY:適用于特定字符集的整理

?  約束和索引

KEY_COLUMN_USAGE:關(guān)鍵列的約束

REFERENTIAL_CONSTRAINTS:外鍵

STATISTICS:表索引

TABLE_CONSTRAINTS:表的約束

?  服務(wù)器設(shè)置和狀態(tài)

KEY_COLUMN_USAGE:約束

GLOBAL_STATUS:所有MySQL 連接的狀態(tài)值

GLOBAL_VARIABLES:用于新的MySQL 連接的值

PLUGINS:服務(wù)器插件

PROCESSLIST:指示哪些線程正在運(yùn)行

SESSION_STATUS:當(dāng)前MySQL 連接的狀態(tài)值

SESSION_VARIABLES:當(dāng)前MySQL 連接的生效值

?  例程及相關(guān)信息

EVENTS:預(yù)定事件

ROUTINES:存儲(chǔ)過(guò)程和功能

TRIGGERS:數(shù)據(jù)庫(kù)中的觸發(fā)器

PARAMETERS:存儲(chǔ)過(guò)程和功能參數(shù)以及存儲(chǔ)函數(shù)

?  InnoDB

INNODB_CMP 和INNODB_CMP_RESET:對(duì)壓縮的InnoDB 表的相關(guān)操作的狀態(tài)

INNODB_CMPMEM 和INNODB_CMPMEM_RESET:InnoDB 緩沖池中壓縮頁(yè)面的狀態(tài)

INNODB_LOCKS:InnoDB 事務(wù)所請(qǐng)求和持有的每個(gè)鎖

INNODB_LOCK_WAITS:每個(gè)阻塞的InnoDB 事務(wù)的一個(gè)或多個(gè)行鎖

INNODB_TRX:當(dāng)前正在InnoDB 內(nèi)部執(zhí)行的所有事務(wù)

TABLESPACES:活動(dòng)的表空間

有關(guān)INFORMATION_SCHEMA 表的更多信息,請(qǐng)參閱《MySQL 參考手冊(cè)》:

http://dev.mysql.com/doc/refman/5.6/en/information-schema.html。

例如:查詢INFORMATION_SCHEMA 數(shù)據(jù)庫(kù)表列:

mysql> SELECT COLUMN_NAME

-> FROM INFORMATION_SCHEMA.COLUMNS

-> WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA'

-> AND TABLE_NAME = 'VIEWS';

當(dāng)使用SELECT 語(yǔ)句在INFORMATION_SCHEMA 表中檢索元數(shù)據(jù)時(shí),您可以使用任何常見(jiàn)的SELECT 功能。通過(guò)使用CREATE TABLE...SELECT 語(yǔ)句或INSERT...SELECT 語(yǔ)句,您可以將INFORMATION_SCHEMA 查詢的結(jié)果檢索到其他表中。您可以保存結(jié)果,以便稍后在其他語(yǔ)句中使用它們。

A.       顯示用于給定數(shù)據(jù)庫(kù)中表的存儲(chǔ)引擎

mysql> SELECT TABLE_NAME, ENGINE

-> FROM INFORMATION_SCHEMA.TABLES

-> WHERE TABLE_SCHEMA = 'world_innodb';

B.       查找所有包含SET 列的表

mysql> SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME

-> FROM INFORMATION_SCHEMA.COLUMNS

-> WHERE DATA_TYPE = 'set';

C.       顯示每個(gè)字符集的默認(rèn)整理

mysql> SELECT CHARACTER_SET_NAME, COLLATION_NAME

-> FROM INFORMATION_SCHEMA.COLLATIONS

-> WHERE IS_DEFAULT = 'Yes';

D.       顯示每個(gè)數(shù)據(jù)庫(kù)中表的編號(hào)

mysql> SELECT TABLE_SCHEMA, COUNT(*)

-> FROM INFORMATION_SCHEMA.TABLES

-> GROUP BY TABLE_SCHEMA;

E.        INFORMATION_SCHEMA 表是只讀的,無(wú)法用INSERT、DELETE 或UPDATE 之類的語(yǔ)句進(jìn)行修改。如果執(zhí)行這些類型的語(yǔ)句以嘗試更改INFORMATION_SCHEMA 表中的數(shù)據(jù),服務(wù)器將生成錯(cuò)誤。

mysql> DELETE FROM INFORMATION_SCHEMA.VIEWS;

ERROR 1044 (42000): Access denied for user

'root'@'localhost' to database 'information_schema'

2)       使用INFORMATION_SCHEMA 表創(chuàng)建Shell 命令

使用CONCAT 功能可以將字符串內(nèi)容結(jié)合起來(lái)創(chuàng)建可在命令行中執(zhí)行的shell 腳本。如示例所示,SQL 語(yǔ)句將生成一條輸出,僅轉(zhuǎn)儲(chǔ)world_innodb 數(shù)據(jù)庫(kù)中那些以單詞“Country”開(kāi)始的的表。輸出將生成可以在shell 命令行上正確執(zhí)行的shell 腳本。下一步是將此輸出存儲(chǔ)在一個(gè)可在shell 命令行中執(zhí)行的批處理文件中。這通過(guò)添加子句INTO OUTFILE 來(lái)完成:

mysql> SELECT CONCAT("mysqldump -uroot -p ",

-> TABLE_SCHEMA, " ",TABLE_NAME, " >> ",TABLE_SCHEMA,".sql")

-> FROM TABLES WHERE TABLE_NAME LIKE 'Country%'

-> INTO OUTFILE '/Country_Dump.sh';

然后可以在命令行中執(zhí)行此文件,命令行將運(yùn)行示例的兩個(gè)mysqldump 命令:

shell> \tmp\Country_Dump.sh

shell> \tmp\mysqldump -uroot -poracle world_innodb Country >>world_innodb.sql

shell> \tmp\mysqldump -uroot -poracle world_innodb Country_Language >>world_innodb.sql

3)       使用INFORMATION_SCHEMA 表創(chuàng)建SQL 語(yǔ)句

使用mysql 命令創(chuàng)建SQL 語(yǔ)句,使用-e 選項(xiàng)輸入SELECT/CONCAT 語(yǔ)句:

shell> mysql -uroot -p --silent --skip-column-names -e

"SELECT CONCAT('CREATE TABLE ', TABLE_SCHEMA, '.',

TABLE_NAME, '_backup LIKE ', TABLE_SCHEMA, '.',

TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_SCHEMA = 'world_innodb';"

將導(dǎo)致以下語(yǔ)句發(fā)送到標(biāo)準(zhǔn)輸出:

CREATE TABLE world_innodb.City_backup LIKE world_innodb.City;

CREATE TABLE world_innodb.Country_backup LIKE world_innodb.Country_backup;

CREATE TABLE world_innodb.CountryLanguage_backup LIKE world_innodb.CountryLanguage_backup;

INFORMATION_SCHEMA 表可創(chuàng)建可在命令行中執(zhí)行的SQL 語(yǔ)句。本示例使用mysql 命令執(zhí)行了一個(gè)語(yǔ)句,以制作world_innodb 數(shù)據(jù)庫(kù)中所有表的精確副本。此命令將創(chuàng)建SQL 輸出,如果執(zhí)行該輸出,將基于world_innodb 數(shù)據(jù)庫(kù)中的表創(chuàng)建三個(gè)備份表。

注:--silent 命令在輸出中刪除列標(biāo)題,--skip-column-names 命令刪除輸出中的格式(使輸出類似于表的格式)。這兩個(gè)命令用來(lái)確保對(duì)命令自身的解釋是正確的,沒(méi)有任何干擾執(zhí)行的外部格式或標(biāo)題行問(wèn)題。

添加管道符號(hào)(|) 并隨之執(zhí)行mysql 命令會(huì)將這些SQL 語(yǔ)句發(fā)送到MySQL 服務(wù)器以便執(zhí)行:

shell> mysql -uroot -p --silent --skip-column-names -e "SELECT CONCAT('CREATE TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, '_backup LIKE ', TABLE_SCHEMA, '.', TABLE_NAME, ';')

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_SCHEMA = 'world_innodb';" | mysql -uroot -poracle

1.3.       SHOW 語(yǔ)句

除了INFORMATION_SCHEMA 表之外,MySQL 還支持SHOW 和DESCRIBE 語(yǔ)句,作為訪問(wèn)元數(shù)據(jù)的備選方式。SHOW 和DESCRIBE 語(yǔ)法不如使用INFORMATION_SCHEMA 查詢靈活,但是對(duì)于大多數(shù)用途,SHOW 和DESCRIBE 語(yǔ)法就足夠了。在這些情況下,使用MySQL 特定語(yǔ)法通常會(huì)更快速、簡(jiǎn)單。MySQL支持的SHOW語(yǔ)句有:

SHOW DATABASES

SHOW TABLES

SHOW TABLE STATUS

SHOW CREATE TABLE

SHOW OPEN TABLES

SHOW INDEX

SHOW COLUMNS

SHOW PROCESSLIST

SHOW COLLATION

SHOW CHARACTER SET

SHOW 語(yǔ)句示例:

mysql> SHOW DATABASES;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| test |

| world_innodb |

+--------------------+

mysql> SHOW TABLES;

mysql> SHOW TABLES FROM mysql;

mysql> SHOW TABLES FROM INFORMATION_SCHEMA;

mysql> SHOW COLUMNS FROM CountryLanguage;

mysql> SHOW FULL COLUMNS FROM CountryLanguage\G

mysql> SHOW DATABASES LIKE 'm%';

mysql> SHOW COLUMNS FROM Country WHERE `Default` IS NULL;

mysql> SHOW INDEX FROM City\G

mysql> SHOW CHARACTER SET;

mysql> SHOW COLLATION;

1.4.       DESCRIBE 語(yǔ)句

DESCRIBE等效于SHOW COLUMNS,可以縮寫為DESC

mysql> DESCRIBE <table_name>;

顯示INFORMATION_SCHEMA 表信息

mysql> DESCRIBE INFORMATION_SCHEMA.CHARACTER_SETS;

+----------------------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+----------------------+-------------+------+-----+---------+-------+

| CHARACTER_SET_NAME | varchar(64) | NO | | | |

| DEFAULT_COLLATE_NAME | varchar(64) | NO | | | |

| DESCRIPTION | varchar(60) | NO | | | |

| MAXLEN | bigint(3) | NO | | 0 | |

+----------------------+-------------+------+-----+---------+-------+

例如:

mysql> DESCRIBE table_name;

mysql> DESC table_name;

         以下語(yǔ)句等效于上述DESCRIBE/DESC 示例:

mysql> SHOW COLUMNS FROM table_name;

         但是,SHOW COLUMNS 支持可選的LIKE 和WHERE 子句,而DESCRIBE 不支持。

EXPLAIN :當(dāng)指定表名稱作為參數(shù)時(shí),EXPLAIN 等效于DESCRIBE:

mysql> EXPLAIN table_name;

1.5.       mysqlshow命令

mysqlshow 為各種格式的SHOW 語(yǔ)句提供了一個(gè)命令行界面,這些語(yǔ)句用于列出數(shù)據(jù)庫(kù)的名稱、數(shù)據(jù)庫(kù)中的表或有關(guān)表列或索引的信息。

mysqlshow 的選項(xiàng)部分可包含任一標(biāo)準(zhǔn)連接參數(shù)選項(xiàng),例如--host 或--user。如果默認(rèn)連接參數(shù)不適合,則必須提供選項(xiàng)。mysqlshow 也接受特定于其自身運(yùn)行的選項(xiàng)。使用--help 選項(xiàng)調(diào)用mysqlshow 可查看其選項(xiàng)的完整列表。mysqlshow 所執(zhí)行的操作取決于已提供的非選項(xiàng)參數(shù)的數(shù)量。

mysqlshow 示例

顯示所有數(shù)據(jù)庫(kù)或特定數(shù)據(jù)庫(kù)、表和/或列的相關(guān)信息:

A.       在沒(méi)有參數(shù)的情況下,mysqlshow 將顯示類似于SHOW DATABASES 的結(jié)果

shell> mysqlshow -u<user_name> -p<password>

+--------------------+

| Databases |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

| world_innodb |

+--------------------+

B.       在使用單個(gè)參數(shù)的情況下,mysqlshow 將該參數(shù)解釋為數(shù)據(jù)庫(kù)名稱,并針對(duì)該數(shù)據(jù)庫(kù)顯示類似于SHOW TABLES 的結(jié)果。

shell> mysqlshow world_innodb

C.       在有兩個(gè)參數(shù)的情況下,mysqlshow 將參數(shù)解釋為數(shù)據(jù)庫(kù)和表名稱,并針對(duì)該表顯示類似于SHOW FULL COLUMNS 的結(jié)果。

shell> mysqlshow world_innodb City

D.       在有三個(gè)參數(shù)的情況下,其輸出與兩個(gè)參數(shù)的情況相同,不同之處在于:mysqlshow將第三個(gè)參數(shù)當(dāng)做列名稱,且僅針對(duì)該列顯示SHOW FULL COLUMNS 輸出。

shell> mysqlshow world_innodb City CountryCode

E.        如果命令行中最后的參數(shù)包含特殊字符,mysqlshow 會(huì)將該參數(shù)解釋為模式,且僅顯示與該模式匹配的名稱。特殊字符包括:% 或 *(匹配任一字符序列),以及 _ 或 ?(匹配任一單個(gè)字符)。本示例中的命令僅顯示那些名稱始于w 的數(shù)據(jù)庫(kù)。

shell> mysqlshow "w%"

注:這些示例要求在執(zhí)行命令時(shí)使用用戶和口令作為參數(shù)。

到此,相信大家對(duì)“MySQL元數(shù)據(jù)有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享題目:MySQL元數(shù)據(jù)有哪些
文章起源:http://muchs.cn/article26/ishcjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站排名網(wǎng)站內(nèi)鏈、企業(yè)建站、手機(jī)網(wǎng)站建設(shè)、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)