MySQL/語言/瀏覽資料庫
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 FROM `table`;
另一個同義詞是
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`