如何通过查询获取MySQL中的数据库结构

时间:2009-05-22 16:14:13

标签: mysql

是否有可能以某种方式获取MySQL数据库的结构,或只是一些简单查询的表?

或者还有另一种方式,我该怎么做?

11 个答案:

答案 0 :(得分:224)

我认为你所追求的是DESCRIBE

DESCRIBE table;

您也可以使用SHOW TABLES

SHOW TABLES;

获取数据库中的表列表。

答案 1 :(得分:91)

要将整个数据库结构作为一组CREATE TABLE语句获取,请使用mysqldump

mysqldump database_name --compact --no-data

对于单个表,在mysqldump中的db name之后添加表名。使用SQL和SHOW CREATE TABLE获得相同的结果:

SHOW CREATE TABLE table;

DESCRIBE如果您更喜欢列列表:

DESCRIBE table;

答案 2 :(得分:37)

查看INFORMATION_SCHEMATABLES表。它包含有关所有表格的元数据。

示例:

SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'table1'

这比其他方法更有优势的是,您可以轻松地使用上面的查询作为其他查询中的子查询。

答案 3 :(得分:27)

使用:

SHOW CREATE TABLE `users`;

会为您提供该表的DDL

DESCRIBE `users`

将列出该表中的列

答案 4 :(得分:15)

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products'; 

其中Table_schema是数据库名称

答案 5 :(得分:11)

这是SHOW CREATE TABLE查询。您也可以查询SCHEMA TABLES

SHOW CREATE TABLE YourTableName;

答案 6 :(得分:7)

我觉得有用的第一个答案的变体

打开命令提示符并输入(您不必登录到您的mysql服务器)

mysqldump -hlocalhost -u<root> -p<password>  <dbname>  --compact --no-data > </path_to_mydump/>mysql.dmp

答案 7 :(得分:1)

SELECT COLUMN_NAME 来自INFORMATION_SCHEMACOLUMNS 在哪里TABLE_SCHEMA =&#39; bodb&#39;     和TABLE_NAME =&#39; abc&#39;;

适用于获取所有列名

答案 8 :(得分:0)

如今,人们使用DESC代替DESCRIPTION。例如:- DESC users;

答案 9 :(得分:0)

在以下示例中,

  

playground 是数据库名称, equipment 是表名称

另一种方法是使用SHOW-COLUMNS:5.5(也可用于5.5>

$ mysql -uroot -p<password> -h<host> -P<port> -e \
    "SHOW COLUMNS FROM playground.equipment"

输出:

mysql: [Warning] Using a password on the command line interface can be insecure.
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| type  | varchar(50) | YES  |     | NULL    |                |
| quant | int(11)     | YES  |     | NULL    |                |
| color | varchar(25) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

一个人也可以使用mysqlshow-client(也可用于5.5>),如下所示:

$ mysqlshow -uroot -p<password> -h<host> -P<port> \
    playground equipment

输出:

mysqlshow: [Warning] Using a password on the command line interface can be insecure.
Database: playground  Table: equipment
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type        | Collation         | Null | Key | Default | Extra          | Privileges                      | Comment |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| id    | int(11)     |                   | NO   | PRI |         | auto_increment | select,insert,update,references |         |
| type  | varchar(50) | latin1_swedish_ci | YES  |     |         |                | select,insert,update,references |         |
| quant | int(11)     |                   | YES  |     |         |                | select,insert,update,references |         |
| color | varchar(25) | latin1_swedish_ci | YES  |     |         |                | select,insert,update,references |         |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+

答案 10 :(得分:0)

您可以选择以下任一命令。所有这些或多或少都相同:

SHOW CREATE TABLE TABLE_NAME;

DESC TABLE_NAME;

SHOW FULL COLUMNS FROM TABLE_NAME; (用于列属性)

EXPLAIN TABLE_NAME;

DESCRIBE TABLE_NAME;