我正在尝试学习我不熟悉的 mysql 数据库的结构。自从我使用mysql以来已经有好几年了。
我正在寻找一种方法来打印此数据库中所有表的所有字段。目前,我正在使用
Show Fields from <insert table name>
然而,这缓慢而笨重。有更快的方法吗?
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.
要查看特定数据库的所有表(如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 数据库可能会有点慢。
试试看 !!!
SELECT TABLE_NAME,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='test'
将“测试”更改为数据库的名称。它必须以 root 用户或有权从 information_schema 表中读取的用户身份运行。