如何显示MySQL数据库中表的架构?


Answers:


534
describe [db_name.]table_name;

用于格式化输出,或

show create table [db_name.]table_name;

用于可用于创建表的SQL语句。


2
这不是答案。OP正在寻找“ db_name”部分,并且该解决方案假定您已经知道
Antonio Ortells

40
OP在7年前接受了这个答案。我认为他对此回答感到满意。
Omry Yadan

数据库不是架构。
编码器

1
desc [db_name.]table_name;简称。
yakout

1
在Antionio的辩护中,某些系统将其相关表的集合称为模式而不是数据库。不知道哪个或为什么。
dlamblin

108
SHOW CREATE TABLE yourTable;

要么

SHOW COLUMNS FROM yourTable;

18

您也可以使用简写形式进行描述,就像desc表格描述一样。

desc [db_name。] table_name;

要么

使用db_name;
desc table_name;

您也可以使用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    |       |
+----------+-------------+------+-----+---------+-------+

12

在这里,可能需要使问题更精确一些,因为可以用两种不同的方式来理解它。即

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

给出了公认的答案,OP显然希望将其以第一方式进行解释。对于任何以其他方式阅读问题的人

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

您对第二点的回答对我的期望有所帮助。我的编辑器在我尝试使用的表上抛出了错误消息“ Invalid Object”,并且由于该表已经由其他人创建,因此我不知道该表所属的DB或Schema,直到我得到此信息为止
mannedear '17

5
SELECT COLUMN_NAME, TABLE_NAME,table_schema
FROM INFORMATION_SCHEMA.COLUMNS;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.