在java開發中,與資料庫打交道是家常便飯。JDBC技術、基於JDBC封裝的工具類庫、基於JDBC封裝的框架是目前java運算元據庫的幾種主要方式。比較常見的基於JDBC封裝的工具類庫有:
mysql中,information_schema是一個資訊庫,用於存放關於mysql伺服器所維護的所有其他資料庫的後設資料資訊,如資料庫名、資料表名、列名(資料表中的)、存取許可權等。
information_schema資料庫中,包括瞭如圖2所示的後設資料資訊表。
下面,對該資料庫中常用的後設資料資訊表進行介紹。
該表提供了當前mysql範例中所有資料庫的資訊。如圖3所示。show databases的結果取之此表。
該表提供了關於資料庫中的表(包括檢視)的資訊。詳細記錄了資料庫中某個表屬於哪個資料庫(SCHEMA),表的名字,表的型別(基本表、檢視),表的引擎,版本、行的格式、表的行數、平均行長度、資料長度、索引長度、建立時間、更新時間、校驗和、表建立選項、建立表註釋等資訊。如圖4所示。show tables from schemaname的結果取之此表。
該表提供了資料庫的表中的列資訊。詳細記錄了某張表的所有列以及每個列的資訊,具體包括:某一個列所在資料庫、所在表、列名、是否可空、資料型別、最大字元長度、數值精度、字元編碼、列型別,等。如圖5所示。show columns from schemaname.tablename的結果取之此表。
該表提供了關於表索引的資訊,具體包括:索引的表的資料庫名、表名、索引名、列名、索引型別、註釋,等。如圖6所示。是show index from schemaname.tablename的結果取之此表。
該表給出了關於使用者許可權的相關資訊,具體包括:被授權者(角色)、授權型別、是否可傳遞授權等。如圖7所示。該資訊源自mysql.user授權表。是非標準表。
該表給出了關於資料庫許可權的資訊,具體包括:被授權角色、資料庫名字、授權型別、是否可傳遞授權。如圖8所示。該資訊來自mysql.db授權表。是非標準表。
該表給出了關於表許可權的資訊,具體包括:被授權角色、資料庫名、表名、許可權型別、是否可被傳遞授權。如圖9所示。該資訊源自mysql.tables_priv授權表。是非標準表。
該表給出了關於列許可權的資訊,具體包括:被授權角色、資料庫、表名、列名、授權型別、是否可被傳遞授權。如圖10所示。該資訊源自mysql.columns_priv授權表。是非標準表。
該表提供了mysql範例可用字元集的資訊,具體包括:字元集名字、預設校核對照名字、描述、最大長度。如圖11所示。是SHOW CHARACTER SET結果集取之此表。
該表提供了關於各字元集的對照資訊,具體包括:校核名字、字元編碼名字、是否預設值等。如圖12所示。
該表指明瞭可用於校對的字元集。這些列等效於SHOW COLLATION的前兩個顯示欄位。如圖13所示。
該表描述了存在約束的表。以及表的約束型別。具體包括:約束的資料庫、約束名、表名、約束型別等。如圖14所示。
該表描述了具有約束的鍵列。具體包括:約束所在資料庫、約束名、表名、列名、在唯一約束裡面的位置、參照的資料庫名、參照的表名、參照的列名等。如圖15所示。
該表提供了關於儲存子程式(儲存程式和函數)的資訊。此時,ROUTINES表不包含自定義函數(UDF)。名為「mysql.proc name」的列指明瞭對應於INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。具體包括:子程式所在資料庫、子程式型別、資料型別、字元最大長度、數位精度、字元編碼名字、字元校核名字、子程式體型別、子程式定義文字、安全型別、建立時間、最後更改時間、sql語句模式、子程式備註、子程式定義角色等。如圖16所示。
該表給出了關於資料庫中的檢視的資訊。需要有show views許可權,否則無法檢視檢視資訊。具體包括:所在資料庫、表名、檢視定義文字、核查選項、是否可更新、檢視定義角色、安全型別、字元集、校核字元集等。如圖17所示。
該表提供了關於觸發程式的資訊。必須有super許可權才能檢視該表。具體包括:觸發器所在資料庫、觸發器名字、觸發條件、觸發器內容、建立時間、sql模式、建立角色等。如圖18所示。
該資料庫中其他的資訊表,在此不再描述。
(1) MYSQL中information_schema簡介
(2) MySQL預設資料庫之 information_schema庫