如何在mysql数据库中打印所有表的所有字段?

时间:2013-05-31 14:43:24

标签: mysql database

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

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

Show Fields from <insert table name>
然而,这种缓慢而笨重。有更快的方法吗?

3 个答案:

答案 0 :(得分:5)

以下是MySQL Online Reference的链接。它是所有MySQL问题的goto资源。

要列出数据库中的所有列,请执行以下操作的变体:

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

第20节介绍了Information_schema。 20.4涵盖了列表。

答案 1 :(得分:3)

要查看特定数据库的所有表(如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数据库会有点慢。

试一试!!!

答案 2 :(得分:0)

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

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