如何通过查询在MySQL中获得数据库结构

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

或者有没有别的方法,我怎么做?

408537 次浏览

用这个:

SHOW CREATE TABLE `users`;

会给你那个表的DDL

DESCRIBE `users`

将列出该表中的列

我认为你想要的是DESCRIBE

DESCRIBE table;

你也可以使用SHOW TABLES

SHOW TABLES;

获取数据库中的表列表。

这是显示创建表查询。你也可以查询模式表

SHOW CREATE TABLE YourTableName;

看一下INFORMATION_SCHEMATABLES表。它包含关于所有表的元数据。

例子:

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

与其他方法相比,这种方法的优点是您可以轻松地将上面的查询作为其他查询中的子查询使用。

要将整个数据库结构作为一组创建表语句获取,请使用, mysqldump:

mysqldump database_name --compact --no-data

对于单表,在mysqldump中将表名加在db名之后。使用SQL和显示创建表可以得到相同的结果:

SHOW CREATE TABLE table;

或者描述,如果你喜欢列列表:

DESCRIBE table;

第一个答案的变化,我觉得很有用

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

mysqldump -hlocalhost -u<root> -p<password>  <dbname>  --compact --no-data > </path_to_mydump/>mysql.dmp
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products';

where Table_schema是数据库名称

< p >选择COLUMN_NAMEINFORMATION_SCHEMA.COLUMNSTABLE_SCHEMA = ' bodb ' 和TABLE_NAME =“abc”;< / p >

适用于获取所有列名

现在,人们用DESC代替DESCRIPTION。例如:- DESC users; < / p >

在下面的例子中,

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 |         |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+

您可以选择下面的任何一个命令。所有这些或多或少都是一样的:

SHOW CREATE TABLE TABLE_NAME;

DESC TABLE_NAME;

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

EXPLAIN TABLE_NAME;

DESCRIBE TABLE_NAME;