如何在MySQL数据库中显示表的模式?

452
MySQL 控制台,哪个命令显示任何给定表的模式?
答案:使用 "DESCRIBE" 或 "\G" 命令可以显示任何给定表的模式。

如果您感兴趣的话,我在这个答案中编写了一个描述所有表格的程序。 - Drew
5个回答

656

进行格式化输出:

describe [db_name.]table_name;

用于创建表的SQL语句:

show create table [db_name.]table_name;

4
这不是答案。原帖的作者想要弄清楚"db_name"这部分内容,而这个解决方案假设你已经知道了它。 - Antonio Ortells
61
楼主在7年前接受了那个答案。我认为他对那个答案感到满意。 - Omry Yadan
4
简称为desc [db_name.]table_name; - yakout
2
为了辩护Antionio,一些系统将它们的相关表集合称为模式而不是数据库。不确定是哪个或为什么。 - dlamblin
1
数据库在mysql/mariadb中与模式同义。 - Firephp
显示剩余3条评论

121
SHOW CREATE TABLE yourTable;
或者
SHOW COLUMNS FROM yourTable;

23

您还可以使用desc作为表描述的简写。

desc [db_name.]table_name;

或者

use db_name;
desc table_name;

您也可以使用explain来查看表描述信息。

explain [db_name.]table_name;

请参阅官方文档

将输出类似于:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(10)     | NO   | PRI | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| age      | int(10)     | YES  |     | NULL    |       |
| sex      | varchar(10) | YES  |     | NULL    |       |
| sal      | int(10)     | YES  |     | NULL    |       |
| location | varchar(20) | YES  |     | Pune    |       |
+----------+-------------+------+-----+---------+-------+

18

也许这里需要稍微明确一下要求的问题,因为它有两种不同的阅读方式。即:

  1. 如何在mysql中获取表的结构/定义?
  2. 如何获取此表所在模式/数据库的名称?

根据被接受的答案,原始提问者显然是想以第一种方式来解释。对于任何以另一种方式阅读问题的人,请尝试:

SELECT `table_schema` 
FROM `information_schema`.`tables` 
WHERE `table_name` = 'whatever';

你对第二点的回答帮了我很大的忙。我的编辑器在我尝试使用的表上抛出了“无效对象”的错误,而我对该表所属的数据库或模式毫不知情,因为该表已经被其他人创建了,直到我得到了这些信息。 - Suresh

7
SELECT COLUMN_NAME, TABLE_NAME,table_schema
FROM INFORMATION_SCHEMA.COLUMNS;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接