最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MYSQL中information_schema的使用

 更新時(shí)間:2025年08月10日 09:54:11   作者:yingjuxia.com  
information_schema是MySQL中的一個(gè)虛擬數(shù)據(jù)庫(kù),用于提供關(guān)于 MySQL 服務(wù)器及其數(shù)據(jù)庫(kù)的元數(shù),這些元數(shù)據(jù)包括數(shù)據(jù)庫(kù)名稱(chēng)、表名稱(chēng)、列的數(shù)據(jù)類(lèi)型、訪問(wèn)權(quán)限等信息,下面就來(lái)詳細(xì)的介紹一下如何使用,感興趣的可以了解一下

關(guān)鍵要點(diǎn)

  • information_schema 是 MySQL 中的一個(gè)虛擬數(shù)據(jù)庫(kù),提供關(guān)于數(shù)據(jù)庫(kù)結(jié)構(gòu)和權(quán)限的元數(shù)據(jù)信息。
  • 研究表明,它包含只讀表(視圖),用戶(hù)可查詢(xún)但不能修改,適合數(shù)據(jù)庫(kù)管理和開(kāi)發(fā)。
  • 它遵循 SQL 標(biāo)準(zhǔn),但 MySQL 有一些特定擴(kuò)展,性能查詢(xún)需注意。

什么是information_schema?

information_schema 是 MySQL 中的一個(gè)虛擬數(shù)據(jù)庫(kù),存儲(chǔ)關(guān)于 MySQL 服務(wù)器及其數(shù)據(jù)庫(kù)的元數(shù)據(jù),例如數(shù)據(jù)庫(kù)名稱(chēng)、表結(jié)構(gòu)、列類(lèi)型和訪問(wèn)權(quán)限等。它不是物理數(shù)據(jù)庫(kù),而是通過(guò)一組只讀表(實(shí)際上是視圖)實(shí)現(xiàn)的,方便用戶(hù)了解服務(wù)器和數(shù)據(jù)庫(kù)的詳細(xì)信息。

主要功能

  • 提供數(shù)據(jù)庫(kù)元數(shù)據(jù),如表名、列類(lèi)型和權(quán)限。
  • 支持通過(guò) SELECT 語(yǔ)句查詢(xún),但不能插入、更新或刪除數(shù)據(jù)。
  • 替代傳統(tǒng)的 SHOW 語(yǔ)句,提供更靈活的元數(shù)據(jù)訪問(wèn)方式。

使用示例

例如,您可以查詢(xún)某個(gè)數(shù)據(jù)庫(kù)的表信息:

SELECT table_name, table_type, engine 
FROM information_schema.tables 
WHERE table_schema = 'db5' 
ORDER BY table_name;

這會(huì)列出 db5 數(shù)據(jù)庫(kù)中的所有表及其類(lèi)型和存儲(chǔ)引擎。

MySQL 中information_schema簡(jiǎn)介詳細(xì)報(bào)告

引言

information_schema 是 MySQL 中的一個(gè)虛擬數(shù)據(jù)庫(kù),用于提供關(guān)于 MySQL 服務(wù)器及其數(shù)據(jù)庫(kù)的元數(shù)據(jù)(metadata)。這些元數(shù)據(jù)包括數(shù)據(jù)庫(kù)名稱(chēng)、表名稱(chēng)、列的數(shù)據(jù)類(lèi)型、訪問(wèn)權(quán)限等信息,是數(shù)據(jù)庫(kù)管理員和開(kāi)發(fā)者查詢(xún)和分析 MySQL 服務(wù)器及其對(duì)象的重要資源。根據(jù)官方 MySQL 文檔(截至 2025 年 7 月 19 日),information_schema 遵循 SQL 標(biāo)準(zhǔn),并包含 MySQL 特定的擴(kuò)展,適合各種數(shù)據(jù)庫(kù)管理和開(kāi)發(fā)場(chǎng)景。

定義與背景

information_schema 是一個(gè)邏輯數(shù)據(jù)庫(kù),不是物理存在的數(shù)據(jù)庫(kù)目錄。它由一組只讀表組成,這些表實(shí)際上是視圖(views),而不是基礎(chǔ)表,因此沒(méi)有關(guān)聯(lián)的文件,也不能設(shè)置觸發(fā)器(triggers)。根據(jù) MySQL 8.0 參考手冊(cè),information_schema 提供了一種標(biāo)準(zhǔn)化的方式來(lái)訪問(wèn)數(shù)據(jù)庫(kù)元數(shù)據(jù),類(lèi)似于 SQL 標(biāo)準(zhǔn)中的數(shù)據(jù)字典(data dictionary)或系統(tǒng)目錄(system catalog)。

研究表明,information_schema 自 MySQL 早期版本起就存在,旨在幫助用戶(hù)了解服務(wù)器和數(shù)據(jù)庫(kù)的結(jié)構(gòu)和狀態(tài)。它是 SQL:2003 標(biāo)準(zhǔn)的一部分,MySQL 實(shí)現(xiàn)了這一標(biāo)準(zhǔn),并添加了一些特定擴(kuò)展以適應(yīng)其功能需求。

主要特點(diǎn)

以下是 information_schema 的核心特點(diǎn):

  • 虛擬數(shù)據(jù)庫(kù)information_schema 是一個(gè)虛擬數(shù)據(jù)庫(kù),存在于每個(gè) MySQL 實(shí)例中,存儲(chǔ)關(guān)于所有其他數(shù)據(jù)庫(kù)的信息。
  • 只讀表:包含多個(gè)只讀表,這些表是視圖,不能進(jìn)行 INSERTUPDATEDELETE 操作,僅支持 SELECT 查詢(xún)。
  • 元數(shù)據(jù)存儲(chǔ):提供關(guān)于數(shù)據(jù)庫(kù)、表、列、索引、權(quán)限、字符集和校對(duì)規(guī)則等詳細(xì)信息。例如:
    • 數(shù)據(jù)庫(kù)名稱(chēng)和特性(schemata 表)。
    • 表名稱(chēng)、類(lèi)型(如 BASE TABLEVIEW)和存儲(chǔ)引擎(tables 表)。
    • 列名稱(chēng)、數(shù)據(jù)類(lèi)型和是否允許空值(columns 表)。
  • 標(biāo)準(zhǔn)化與擴(kuò)展:遵循 ANSI/ISO SQL:2003 標(biāo)準(zhǔn),但包含 MySQL 特定的列和表,如 ENGINE 列在 TABLES 表中,反映 MySQL 的存儲(chǔ)引擎信息。
  • 性能考慮:查詢(xún) information_schema 時(shí),尤其是涉及多個(gè)數(shù)據(jù)庫(kù)的查詢(xún),可能較慢,建議使用 EXPLAIN 優(yōu)化查詢(xún)。

以下是 information_schema 中一些常見(jiàn)表的示例:

表名稱(chēng)主要功能示例列
tables提供數(shù)據(jù)庫(kù)中表的信息table_name, table_type, engine
columns提供表中列的詳細(xì)信息column_name, data_type, is_nullable
schemata提供數(shù)據(jù)庫(kù)的信息schema_name, default_character_set_name
column_privileges提供列級(jí)別的權(quán)限信息grantee, table_schema, column_name
character_sets提供支持的字符集信息character_set_name, default_collate_name
collations提供支持的校對(duì)規(guī)則信息collation_name, character_set_name

使用方式

用戶(hù)可以通過(guò)標(biāo)準(zhǔn)的 SQL 查詢(xún)?cè)L問(wèn) information_schema 中的表。例如,以下查詢(xún)列出 db5 數(shù)據(jù)庫(kù)中的所有表及其類(lèi)型和存儲(chǔ)引擎:

SELECT table_name, table_type, engine 
FROM information_schema.tables 
WHERE table_schema = 'db5' 
ORDER BY table_name;

輸出可能如下(示例數(shù)據(jù)):

table_nametable_typeengine
fkBASE TABLEInnoDB
fk2BASE TABLEInnoDB
gotoBASE TABLEMyISAM
intoBASE TABLEMyISAM
kBASE TABLEMyISAM
kursBASE TABLEMyISAM
loopBASE TABLEMyISAM
pkBASE TABLEInnoDB
tBASE TABLEMyISAM
t2BASE TABLEMyISAM
t3BASE TABLEMyISAM
t7BASE TABLEMyISAM
tablesBASE TABLEMyISAM
vVIEWNULL
v2VIEWNULL
v3VIEWNULL
v56VIEWNULL

此查詢(xún)耗時(shí) 0.01 秒,返回 17 行,展示了 information_schema 的查詢(xún)效率。

information_schema 還可以替代傳統(tǒng)的 SHOW 語(yǔ)句,提供更靈活的元數(shù)據(jù)訪問(wèn)。例如:

  • SHOW TABLES 可以用以下查詢(xún)替代:
    SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE();
    
  • 這種方式符合 Codd 的規(guī)則,語(yǔ)法更熟悉,且與 Oracle Database 等其他數(shù)據(jù)庫(kù)系統(tǒng)兼容。

權(quán)限與可見(jiàn)性

根據(jù)文檔,大多數(shù) information_schema 表對(duì)所有用戶(hù)可見(jiàn),但用戶(hù)只能看到他們有權(quán)限訪問(wèn)的對(duì)象的信息。例如:

  • 如果用戶(hù)沒(méi)有權(quán)限訪問(wèn)某個(gè)數(shù)據(jù)庫(kù),他們將無(wú)法從 information_schema.tables 中看到該數(shù)據(jù)庫(kù)的表。
  • 某些情況下,如 ROUTINE_DEFINITION 列在 ROUTINES 表中,如果用戶(hù)權(quán)限不足,將顯示 NULL。
  • InnoDB 相關(guān)的表(如名稱(chēng)以 INNODB_ 開(kāi)頭的表)需要 PROCESS 權(quán)限才能訪問(wèn)。
  • information_schemaSHOW 語(yǔ)句的權(quán)限要求相同。

性能與注意事項(xiàng)

查詢(xún) information_schema 時(shí)需注意性能問(wèn)題:

  • 涉及多個(gè)數(shù)據(jù)庫(kù)的查詢(xún)可能較慢,建議使用 EXPLAIN 語(yǔ)句分析和優(yōu)化查詢(xún)。
  • 字符列(如 TABLES.TABLE_NAME)通常使用 VARCHAR(N) CHARACTER SET utf8mb3,默認(rèn)校對(duì)規(guī)則為 utf8mb3_general_ci,文件系統(tǒng)的區(qū)分大小寫(xiě)可能影響搜索結(jié)果。
  • 從 MySQL 8.0.30 開(kāi)始,information_schema 中的某些表(如 columnsstatistics)默認(rèn)顯示生成的不可見(jiàn)主鍵(Generated Invisible Primary Keys)的信息。如果需要隱藏,可以通過(guò)設(shè)置系統(tǒng)變量 show_gipk_in_create_table_and_information_schemaOFF

應(yīng)用場(chǎng)景

information_schema 在以下場(chǎng)景中非常有用:

  • 數(shù)據(jù)庫(kù)管理:數(shù)據(jù)庫(kù)管理員(DBA)可以使用它來(lái)監(jiān)控和管理 MySQL 服務(wù)器的狀態(tài),例如檢查表的存儲(chǔ)引擎、列的數(shù)據(jù)類(lèi)型等。
  • 開(kāi)發(fā)和調(diào)試:開(kāi)發(fā)者可以在開(kāi)發(fā)過(guò)程中動(dòng)態(tài)獲取數(shù)據(jù)庫(kù)結(jié)構(gòu)信息,例如在編寫(xiě)動(dòng)態(tài) SQL 時(shí)獲取表或列的名稱(chēng)。
  • 權(quán)限審計(jì):可以通過(guò)查詢(xún)權(quán)限相關(guān)的表(如 column_privileges)來(lái)審計(jì)用戶(hù)的訪問(wèn)權(quán)限。

歷史與發(fā)展

根據(jù) MySQL 文檔,information_schema 是 SQL 標(biāo)準(zhǔn)的一部分,自 MySQL 早期版本起就存在,并不斷擴(kuò)展以支持新功能。2025 年 7 月 19 日,最新版本的 MySQL(如 8.0 和 8.4)繼續(xù)支持和優(yōu)化 information_schema,使其成為數(shù)據(jù)庫(kù)管理和開(kāi)發(fā)的強(qiáng)大工具。

對(duì)比與爭(zhēng)議

與傳統(tǒng)的 SHOW 語(yǔ)句相比,information_schema 提供更標(biāo)準(zhǔn)化的查詢(xún)方式,但查詢(xún)性能可能不如 SHOW 語(yǔ)句快,尤其在處理大型數(shù)據(jù)庫(kù)時(shí)。根據(jù)社區(qū)討論(如 Stack Exchange),部分用戶(hù)認(rèn)為 information_schema 的查詢(xún)結(jié)果更全面,但需要注意性能優(yōu)化。

到此這篇關(guān)于MYSQL中information_schema的使用的文章就介紹到這了,更多相關(guān)MYSQL information_schema內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql聯(lián)合索引最左匹配原則的底層實(shí)現(xiàn)原理解讀

    mysql聯(lián)合索引最左匹配原則的底層實(shí)現(xiàn)原理解讀

    這篇文章主要介紹了mysql聯(lián)合索引最左匹配原則的底層實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 登錄mysql報(bào)錯(cuò)Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)解決方法

    登錄mysql報(bào)錯(cuò)Can‘t connect to MySQL server&n

    這篇文章主要給大家介紹了登錄mysql報(bào)錯(cuò) Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)解決方法,文中有詳細(xì)的解決步驟,需要的朋友可以參考下
    2023-09-09
  • MySQL中文亂碼問(wèn)題解決方案

    MySQL中文亂碼問(wèn)題解決方案

    這篇文章主要介紹了MySQL中文亂碼問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • MySQL EXPLAIN語(yǔ)句的使用示例

    MySQL EXPLAIN語(yǔ)句的使用示例

    這篇文章主要介紹了MySQL EXPLAIN語(yǔ)句的使用示例,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • 淺談MySQL觸發(fā)器的原理以及使用

    淺談MySQL觸發(fā)器的原理以及使用

    這篇文章主要介紹了淺談MySQL觸發(fā)器的原理以及使用,觸發(fā)器的執(zhí)行不需要使用 CALL 語(yǔ)句來(lái)調(diào)用,也不需要手工啟動(dòng),只要一個(gè)預(yù)定義的事件發(fā)生就會(huì)被 MySQL自動(dòng)調(diào)用,需要的朋友可以參考下
    2023-05-05
  • Mysql 分批加索引的詳細(xì)方法

    Mysql 分批加索引的詳細(xì)方法

    文章主要介紹了在生產(chǎn)環(huán)境中為千萬(wàn)級(jí)數(shù)據(jù)表分批次創(chuàng)建索引的策略和方法,包括使用臨時(shí)表、分區(qū)表、ONLINE選項(xiàng)、分批ALTER TABLE、pt-online-schema-change工具等,并提供了詳細(xì)的步驟和注意事項(xiàng),感興趣的朋友一起看看吧
    2024-12-12
  • MySQL中給定父行找到所有子行的解決方案

    MySQL中給定父行找到所有子行的解決方案

    這篇文章主要給大家介紹了關(guān)于MySQL中給定父行找到所有子行的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • window10系統(tǒng)下mysql5.7安裝審計(jì)插件(親測(cè)有用)

    window10系統(tǒng)下mysql5.7安裝審計(jì)插件(親測(cè)有用)

    mysql有沒(méi)oracle這樣的審計(jì)功能,突然想在mysql做審計(jì)怎么辦,下面帶大家從零開(kāi)始給mysql安裝審計(jì)插件,親測(cè)絕對(duì)可用哦,需要的朋友可以參考下
    2022-09-09
  • SQL分頁(yè)查詢(xún)存儲(chǔ)過(guò)程代碼分享

    SQL分頁(yè)查詢(xún)存儲(chǔ)過(guò)程代碼分享

    本文主要分享了SQL分頁(yè)查詢(xún)存儲(chǔ)過(guò)程的具體實(shí)例代碼,具有一定的參考價(jià)值,需要的朋友一起來(lái)看下吧
    2016-12-12
  • MySQL新建用戶(hù)中的%到底包不包括localhost?

    MySQL新建用戶(hù)中的%到底包不包括localhost?

    操作MySQL的時(shí)候發(fā)現(xiàn),有時(shí)只建了%的賬號(hào),可以通過(guò)localhost連接,有時(shí)候卻不可以,網(wǎng)上搜索也找不到滿意的答案,干脆手動(dòng)測(cè)試一波
    2019-02-02

最新評(píng)論

沙河市| 蓬莱市| 黑山县| 越西县| 五家渠市| 彰武县| 遂平县| 黄平县| 大余县| 宁国市| 工布江达县| 霸州市| 灵武市| 西乌| 新疆| 上犹县| 德惠市| 合作市| 剑川县| 固始县| 吉林市| 屯留县| 靖宇县| 攀枝花市| 定安县| 融水| 巴马| 张家港市| 阿尔山市| 英吉沙县| 阳曲县| 神农架林区| 佛教| 太白县| 汾阳市| 城市| 灌南县| 万山特区| 广德县| 舟山市| 双柏县|