跳轉到內容

MySQL/語言/瀏覽資料庫

來自華夏公益教科書,開放的書籍,開放的世界
information_schema 資料庫到 phpMyAdmin。

INFORMATION_SCHEMA

[編輯 | 編輯原始碼]

information_schema 是由 MySQL 5 及更高版本提供的虛擬資料庫,其中包含有關伺服器和資料庫的元資料。

您無法修改 information_schema 的結構和資料。您只能查詢表。

許多 information_schema 表提供與 SHOW 語句檢索到的相同資料。雖然使用 SHOW 命令更快(伺服器響應速度更快,您鍵入的字元更少),但 information_schema 提供了一種更靈活的方法來獲取和組織元資料。


列出資料庫

[編輯 | 編輯原始碼]

包含資料庫資訊的 INFORMATION_SCHEMA 表是 SCHEMATA。

可以使用 mysqlshow 命令列工具(DOS/Unix)代替。如果伺服器已使用 --skip-all-databases 選項啟動,則無法顯示資料庫。

如果您沒有“SHOW DATABASES”許可權,您將只能看到您擁有某些許可權的資料庫。

以下 SQL 命令提供有關當前伺服器上資料庫的資訊。

顯示所有資料庫

 SHOW DATABASES;

SCHEMA 關鍵字可以替代 DATABASES。MySQL 不支援標準 SQL SCHEMAs,因此 SCHEMA 是資料庫的同義詞。它已新增以與其他 DBMS 相容。

在資料庫名稱上新增過濾器

[編輯 | 編輯原始碼]
 SHOW DATABASES LIKE 'pattern';

這裡的 LIKE 運算子與普通 SELECT 或 DML 語句中的工作原理相同。因此,您可以列出所有名稱以“my”開頭的資料庫

 SHOW DATABASES LIKE 'my%';

新增複雜過濾器

[編輯 | 編輯原始碼]

您可以使用 WHERE 子句新增更復雜的過濾器

 SHOW DATABASES WHERE conditions;

WHERE 子句允許您使用正則表示式、'='、'<' 和 '>' 運算子、字串函式或其他有用表示式來過濾 SHOW DATABASES 返回的記錄。

列出表和檢視

[編輯 | 編輯原始碼]

以下 SQL 命令提供有關資料庫中包含的表和檢視的資訊。包含此資訊的 INFORMATION_SCHEMA 表是 `TABLES` 和 `VIEWS`。

由於以下語句提供有關檢視的資訊很少,如果您需要獲取有關檢視的元資料,您可能更喜歡查詢 VIEWS 表。

可以使用 mysqlshow 命令列工具代替。

顯示所有表

[編輯 | 編輯原始碼]
 USE `database`;
 SHOW TABLES;

 SHOW TABLES FROM `database`;

上面顯示的兩種形式是等效的。

應用過濾器

[編輯 | 編輯原始碼]

您可以將過濾器應用於表名,以僅顯示名稱匹配模式的表。您可以使用 LIKE 運算子,就像在 SELECT 或 DML 語句中一樣

 SHOW TABLES LIKE `pattern`;

此外,您可以使用 WHERE 子句將更復雜的過濾器應用於 SHOW TABLES 命令返回的任何列

 SHOW TABLES WHERE condition;

(見下文)

額外資訊

[編輯 | 編輯原始碼]

預設情況下,SHOW TABLES 只返回包含表名的單列。您可以使用 FULL 關鍵字獲取更多資訊

 SHOW FULL TABLES;

這將新增一列名為 `Table_type`。這可以有三個值:'BASE TABLE' 表示表,'VIEW' 表示檢視,'SYSTEM VIEW' 表示伺服器建立的特殊表(通常僅用於 INFORMATION_SCHEMA 表)。

因此,您只能列出表

 SHOW FULL TABLES WHERE `Table_type`='BASE TABLE';

或者,您只能列出檢視

 SHOW FULL TABLES WHERE `Table_type`='VIEW';

僅顯示開啟的表

[編輯 | 編輯原始碼]

您可以獲取快取中開啟的非臨時表(不是檢視)的列表

 SHOW OPEN TABLES;

此命令與 SHOW TABLES 具有相同的引數,除了 FULL(在這種情況下無用)。您無法從 INFORMATION_SCHEMA 中獲取此資訊。

列出欄位

[編輯 | 編輯原始碼]

以下 SQL 命令提供有關表或檢視中列的資訊。包含此資訊的 INFORMATION_SCHEMA 表是 COLUMNS。

可以使用 mysqlshow 命令列工具代替。

 DESCRIBE `table`;
 DESCRIBE `database`.`table`;
 DESCRIBE `table` 'filter';

DESC 可以用作 DESCRIBE 的快捷方式。

'filter' 可以是列名。如果指定了列名,則只會顯示該列。如果 'filter' 包含 '%' 或 '_' 字元,則會將其評估為 LIKE 條件。例如,您可以列出所有以 'my' 開頭的欄位

 DESC `table` 'my%';

同義詞是

 EXPLAIN `table`;

SHOW FIELDS

[編輯 | 編輯原始碼]

另一個同義詞是

 SHOW FIELDS FROM `table`;

SHOW COLUMNS

[編輯 | 編輯原始碼]

另一個同義詞是

 SHOW COLUMNS FROM `table`;

-- possible clauses:
 SHOW COLUMNS FROM `table` FROM `database`;
 SHOW COLUMNS FROM `table` LIKE 'pattern';
 SHOW COLUMNS FROM `table` WHERE condition;

FIELDS 和 COLUMNS 是同義詞。EXPLAIN 也是 SHOW COLUMNS / FIELDS 的同義詞,但它不支援所有子句。

資料庫名稱可以用兩種形式指定

 SHOW COLUMNS FROM `table` FROM `database`;

兩者

 SHOW COLUMNS FROM `database`.`table`;

額外資訊

[編輯 | 編輯原始碼]

使用 FULL 關鍵字,可以重新獲取額外資訊:列的排序規則、您對列的許可權和註釋。

欄位 型別 排序規則 空值 預設值 額外 許可權 註釋
... ... ... ... ... ... ... ... ...

列出索引

[編輯 | 編輯原始碼]

以下 SQL 命令提供有關表中索引的資訊。有關鍵的資訊包含在 INFORMATION_SCHEMA 中的 `COLUMNS` 表中。

可以使用 mysqlshow -k 命令列工具代替。

 SHOW INDEX FROM `TABLE`;
 SHOW INDEX FROM `TABLE` FROM `databases`;

KEYS 保留字可以用作 INDEX 的同義詞。沒有提供其他子句。

結果示例

非唯一 鍵名 索引中的序列號 列名 排序規則 基數 子部分 打包 空值 索引型別 註釋 索引註釋
Table1 0 PRIMARY 1 id A 19 NULL NULL BTREE
備註:使用 phpMyAdmin 可以輕鬆地多次建立相同的索引,這會減慢請求速度。

要刪除索引

DROP INDEX `date_2` on `Table1`
華夏公益教科書