我正在尝试学习我不熟悉的mysql数据库的结构。我使用mysql已经好几年了。
我正在寻找一种方法来打印此数据库中所有表的所有字段。目前,我正在使用
Show Fields from <insert table name>
然而,这种缓慢而笨重。有更快的方法吗?
答案 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表中读取权限的用户身份运行。