是否有可能以某种方式获取MySQL数据库的结构,或者只是一些带有简单查询的表?
或者还有其他方法吗,我该怎么做?
要将整个数据库结构作为一组 CREATE TABLE 语句获取,请使用 mysqldump:
mysqldump database_name --compact --no-data
对于单表,在mysqldump中的db名称后面添加表名称。使用 SQL 和 SHOW CREATE TABLE:
可以获得相同的结果SHOW CREATE TABLE table;
或者 DESCRIBE 如果您更喜欢列列表:
DESCRIBE table;
看一下
INFORMATION_SCHEMA
.TABLES
表。它包含有关所有表的元数据。
示例:
SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'table1'
与其他方法相比,这种方法的优点是您可以轻松地将上面的查询用作其他查询中的子查询。
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products';
其中
Table_schema
是数据库名称
这就是 SHOW CREATE TABLE 查询。您也可以查询SCHEMA TABLES。
SHOW CREATE TABLE YourTableName;
我发现有用的第一个答案的变体
打开命令提示符并输入(您不必登录到 mysql 服务器)
mysqldump -hlocalhost -u<root> -p<password> <dbname> --compact --no-data > </path_to_mydump/>mysql.dmp
您可以选择以下任一命令。它们都或多或少相同:
SHOW CREATE TABLE TABLE_NAME;
DESC TABLE_NAME;
SHOW FULL COLUMNS FROM TABLE_NAME;
(对于列属性)
EXPLAIN TABLE_NAME;
DESCRIBE TABLE_NAME;
在以下示例中,
是数据库名称,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 | |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
选择
COLUMN_NAME
来自 INFORMATION_SCHEMA
.COLUMNS
哪里 TABLE_SCHEMA
='bodb'
和 TABLE_NAME
='abc';
适用于获取所有列名称
现在,人们使用
DESC
代替 DESCRIPTION
。例如:-
DESC users;