## 3.4 獲取數據庫和表的信息
如果你忘記了數據庫或者表的名字, 或者忘記了表的結構是什么 (例如, 它的列是什么)? MySQL 通過提供關于它支持的數據庫和表信息的幾個語句來解決這個問題.
你之前看過了 [`SHOW DATABASES`](https://dev.mysql.com/doc/refman/8.0/en/show-databases.html), 它列出了服務器上管理的數據庫. 要找出當前選擇的數據庫, 使用 [`DATABASE()`](https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_database) 函數:
```sql
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie |
+------------+
```
如果你還沒有選擇任何數據庫, 結果為 `NULL`.
要找出默認數據庫包含那些表(例如, 當你不確定表的名字時), 使用以下語句:
```sql
mysql> SHOW TABLES;
+---------------------+
| Tables_in_menagerie |
+---------------------+
| event |
| pet |
+---------------------+
```
該語句生成的列的名稱總是 `Tables_in_db_name`, 其中 *`db_name`* 是數據庫的名稱. 參閱 [Section 13.7.6.37, “SHOW TABLES 語法”](https://dev.mysql.com/doc/refman/8.0/en/show-tables.html)獲取更多信息.
如果你想了解表的結構, [`DESCRIBE`](https://dev.mysql.com/doc/refman/8.0/en/describe.html) 語句非常有用; 它顯示表中每個列的信息:
```sql
mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
```
`Field` 表示列名, `Type` 是列的數據類型, `NULL` 表示列是否可以包含 `NULL` 值, `Key` 表示列是否被索引, `Default` 指定列的默認值. `Extra` 顯示關于列的特殊信息: 如果創建的列使用了 `AUTO_INCREMENT` 選項, 那么值將會 `auto_increment` 而不是空的.
`DESC` 是 [`DESCRIBE`](https://dev.mysql.com/doc/refman/8.0/en/describe.html) 的縮寫. 參閱 [Section 13.8.1, “DESCRIBE 語法”](https://dev.mysql.com/doc/refman/8.0/en/describe.html)獲取更多信息.
你可以使用 [`SHOW CREATE TABLE`](https://dev.mysql.com/doc/refman/8.0/en/show-create-table.html) 語句獲得創建現有表的 [`CREATE TABLE`](https://dev.mysql.com/doc/refman/8.0/en/create-table.html) 語句. 參閱 [Section 13.7.6.10, “SHOW CREATE TABLE 語法](https://dev.mysql.com/doc/refman/8.0/en/show-create-table.html).
如果表中有索引, `SHOW INDEX FROM tbl_name` 生成關于它們的信息. 參閱 [Section 13.7.6.22, “SHOW INDEX 語法”](https://dev.mysql.com/doc/refman/8.0/en/show-index.html)獲取更多信息.
- 簡介
- 前言和法律條款
- 安裝和更新 MySQL
- 在 Linux 上安裝 MySQL
- 在 Linux 上使用 APT 庫安裝 MySQL
- 在 Linux 上使用 Docker 部署 MySQL
- 使用 Docker 部署 MySQL 服務器的基本步驟
- 使用 Docker 部署 MySQL 服務器的更多主題
- 教程
- 連接到服務器和從服務器斷開
- 輸入查詢
- 創建和使用數據庫
- 創建和選擇數據庫
- 創建表
- 將數據加載到表中
- 從表中檢索數據
- 選擇所有數據
- 選擇特定行
- 選擇指定列
- 行排序
- 日期計算
- 處理 NULL 值
- 模式匹配
- 計算行數
- 使用多個表
- 獲取數據庫和表的信息
- 在批處理模式使用 mysql
- 常見查詢示例
- 列的最大值
- 包含某一行最大值的記錄
- 每組中列的最大值
- 擁有某個字段的組間最大值的行
- 使用用戶自定義變量
- 使用外鍵
- 兩個鍵上搜索
- 計算每日訪問量
- 使用 AUTO_INCREMENT
- 在 Apache 中使用 MySQL
- MySQL 程序
- MySQL 客戶端程序
- mysql — MySQL 命令行客戶端
- 優化
- 優化概述
- 優化 SQL 語句
- 優化和索引
- 優化數據庫結構
- 優化 InnoDB 表
- 優化 MyISAM 表
- 優化 MEMORY 表
- 理解查詢執行計劃
- 控制查詢優化器
- 緩沖和緩存
- 優化鎖操作
- 優化 MySQL 服務器
- 測量性能 (Benchmarking)
- 檢查線程信息