1. 程式人生 > >mysql查看錶結構的幾種方式

mysql查看錶結構的幾種方式

在實際的開發中,我們肯定經常要查看錶結構的,特別是遇到自己不是最初開發的專案的時候,通過表結構,大概就能看出表裡存什麼資料,每個欄位代表什麼意思。實際上有很多查看錶結構的方式,下面就拿rails裡面的表schema_migrations介紹一下我自己常用的命令:

desc table_name;

mysql> desc schema_migrations;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| version | varchar(255) | NO   | PRI | NULL    |       |
+---------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)

它是我們最常用的命令,這個命令也是describe schema_migrations的縮寫。

show fields from table_name;

mysql> show fields from schema_migrations;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| version | varchar(255) | NO   | PRI | NULL    |       |
+---------+--------------+------+-----+---------+-------+
1 row in set (0.01 sec)

和describe命令達到的效果一樣。 在它的基礎上就有一個更強大的命令:

show full fields from table_name

mysql> show full fields from schema_migrations;
+---------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| Field   | Type         | Collation       | Null | Key | Default | Extra | Privileges                      | Comment |
+---------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| version | varchar(255) | utf8_general_ci | NO   | PRI | NULL    |       | select,insert,update,references |         |
+---------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
1 row in set (0.01 sec)

每個欄位的詳細資訊也就出來了,但是遺憾的是索引沒有處理,說到檢視索引,很明顯就會想到下面的命令:

show index from table_name

mysql> show index from schema_migrations;
+-------------------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table             | Non_unique | Key_name                 | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------------------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| schema_migrations |          0 | unique_schema_migrations |            1 | version     | A         |          21 |     NULL | NULL   |      | BTREE      |         |               |
+-------------------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)

這個命令和show keys from table_name得到的效果一樣。 實際上有個終極命令,既可以看到本身的欄位又可以看到索引等其他資訊,還能得到完整的建立表結構的命令,那就是:

show create table table_name

mysql> show create table schema_migrations;
+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table             | Create Table                                                                                                                                                   |
+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| schema_migrations | CREATE TABLE `schema_migrations` (
  `version` varchar(255) NOT NULL,
  UNIQUE KEY `unique_schema_migrations` (`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

通過命令執行的結果可以看到建立表的sql語句,欄位名,索引,搜尋引擎,編碼方式等資訊,是不是很強大。