【发布时间】:2010-10-28 06:35:17
【问题描述】:
是否有可能以某种方式获得 MySQL 数据库的结构,或者只是一些简单查询的表?
或者还有其他方法,我该怎么做?
【问题讨论】:
标签: mysql
是否有可能以某种方式获得 MySQL 数据库的结构,或者只是一些简单查询的表?
或者还有其他方法,我该怎么做?
【问题讨论】:
标签: mysql
【讨论】:
SHOW TABLES FROM database_name
要将整个数据库结构作为一组CREATE TABLE 语句,请使用mysqldump:
mysqldump database_name --compact --no-data
对于单个表,在 mysqldump 中的 db name 后面添加表名。使用 SQL 和 SHOW CREATE TABLE 得到相同的结果:
SHOW CREATE TABLE table;
或DESCRIBE,如果您更喜欢列列表:
DESCRIBE table;
【讨论】:
show create table 正是我想要的。谢谢!
查看INFORMATION_SCHEMA.TABLES 表。它包含有关所有表的元数据。
例子:
SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'table1'
与其他方法相比,此方法的优势在于您可以轻松地将上述查询用作其他查询中的子查询。
【讨论】:
information_schema.columns(使用columns表而不是tables?因为tables不包含任何关于哪些类型是表格列
【讨论】:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products';
Table_schema 是数据库名称
【讨论】:
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_db_name' AND TABLE_NAME ='users';
这是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;
【讨论】: