【问题标题】:How do I print all fields for all tables in mysql database?如何打印mysql数据库中所有表的所有字段?
【发布时间】:2013-05-31 14:43:23
【问题描述】:

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

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

Show Fields from <insert table name>

但是,这又慢又笨重。有更快的方法吗?

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    要查看特定数据库的所有表(如 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】:

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

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

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

      第 20 节涵盖 Information_schema。 20.4 涵盖列表。

      【讨论】:

      • CAVEAT :如果有很多繁忙的 InnoDB 表,这可能需要很长时间。如果所有表都是 MyISAM,那就没问题了。 +1 !!!
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-23
        • 2011-08-29
        • 2016-11-15
        • 2015-01-13
        • 2021-01-14
        • 2012-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多