3

我正在尝试学习我不熟悉的 mysql 数据库的结构。自从我使用mysql以来已经有好几年了。

我正在寻找一种方法来打印此数据库中所有表的所有字段。目前,我正在使用

Show Fields from <insert table name>

然而,这缓慢而笨重。有更快的方法吗?

4

3 回答 3

5

Here is a link to the MySQL Online Reference. It is the goto resource for all of your MySQL questions.

To list all columns in a db, do a variation of this:

select * from information_schema.columns order by table_schema, table_name, column_name

Section 20 covers the Information_schema. 20.4 covers the columns table.

于 2013-05-31T14:51:59.723 回答
5

要查看特定数据库的所有表(如mydb),请执行以下操作:

USE mydb
SHOW TABLES;

要查看 中的所有字段、索引、存储引擎、表选项、分区布局mydb.mytable,请执行以下操作:

USE mydb
SHOW CREATE TABLE tblname\G

要批量查看所有数据库中的所有表,这是一个脚本:

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--routines --triggers --no-data --all-databases"
mysqldump ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} > MySQLSchema.sql
less MySQLSchema.sql

如果您想查看特定数据库(如mydb),请执行以下操作:

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL} -p${MYSQL_PASS}"
DBTOSHOW=mydb
MYSQLDUMP_OPTIONS="--routines --triggers --no-data --databases ${DBTOSHOW}"
mysqldump ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} > MySQLSchema.sql
less MySQLSchema.sql

这应该是最快的方法,因为如果有很多繁忙的 InnoDB 表,访问 information_schema 数据库可能会有点慢。

试试看 !!!

于 2013-05-31T14:47:30.063 回答
0

SELECT TABLE_NAME,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='test'

将“测试”更改为数据库的名称。它必须以 root 用户或有权从 information_schema 表中读取的用户身份运行。

于 2013-05-31T14:54:47.667 回答