是否有可能以某种方式获取MySQL数据库的结构,或只是一些简单查询的表?
或者还有另一种方式,我该怎么做?
答案 0 :(得分:224)
答案 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_SCHEMA
。TABLES
表。它包含有关所有表格的元数据。
示例:
SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'table1'
这比其他方法更有优势的是,您可以轻松地使用上面的查询作为其他查询中的子查询。
答案 3 :(得分:27)
答案 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_SCHEMA
。COLUMNS
在哪里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;