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

问题描述 投票:0回答:11

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

或者还有其他方法吗,我该怎么做?

mysql
11个回答
316
投票

我想你所追求的是

DESCRIBE

DESCRIBE <table name>;

您还可以使用

SHOW TABLES

SHOW TABLES;

获取数据库中表的列表。


131
投票

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

mysqldump database_name --compact --no-data

对于单表,在mysqldump中的db名称后面添加表名称。使用 SQL 和 SHOW CREATE TABLE:

可以获得相同的结果
SHOW CREATE TABLE table;

或者 DESCRIBE 如果您更喜欢列列表:

DESCRIBE table;

53
投票

看一下

INFORMATION_SCHEMA
.
TABLES
表。它包含有关所有表的元数据。

示例:

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

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


37
投票

使用这个:

SHOW CREATE TABLE `users`;

将为您提供该表的 DDL

DESCRIBE `users`

将列出该表中的列


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

其中

Table_schema
是数据库名称


17
投票

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

SHOW CREATE TABLE YourTableName;

12
投票

我发现有用的第一个答案的变体

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

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

11
投票

您可以选择以下任一命令。它们都或多或少相同:

SHOW CREATE TABLE TABLE_NAME;

DESC TABLE_NAME;

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

EXPLAIN TABLE_NAME;

DESCRIBE TABLE_NAME;


4
投票

在以下示例中,

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

3
投票

选择

COLUMN_NAME
来自
INFORMATION_SCHEMA
.
COLUMNS
哪里
TABLE_SCHEMA
='bodb' 和
TABLE_NAME
='abc';

适用于获取所有列名称


1
投票

现在,人们使用

DESC
代替
DESCRIPTION
。例如:-
DESC users;

© www.soinside.com 2019 - 2024. All rights reserved.