【发布时间】:2013-05-31 14:43:23
【问题描述】:
我正在尝试学习一个我不熟悉的 mysql 数据库的结构。自从我使用mysql以来已经有好几年了。
我正在寻找一种方法来打印此数据库中所有表的所有字段。目前,我正在使用
Show Fields from <insert table name>
但是,这又慢又笨重。有更快的方法吗?
【问题讨论】:
我正在尝试学习一个我不熟悉的 mysql 数据库的结构。自从我使用mysql以来已经有好几年了。
我正在寻找一种方法来打印此数据库中所有表的所有字段。目前,我正在使用
Show Fields from <insert table name>
但是,这又慢又笨重。有更快的方法吗?
【问题讨论】:
要查看特定数据库的所有表(如 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 数据库可能会有点慢。
试试看!!!
【讨论】:
这是MySQL Online Reference 的链接。它是您所有 MySQL 问题的 goto 资源。
要列出数据库中的所有列,请执行以下操作:
select * from information_schema.columns order by table_schema, table_name, column_name
第 20 节涵盖 Information_schema。 20.4 涵盖列表。
【讨论】:
SELECT TABLE_NAME,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='test'
将“测试”更改为您的数据库名称。它必须以 root 用户或有权读取 information_schema 表的用户身份运行。
【讨论】: