よく知らない mysql データベースの構造を学ぼうとしています。mysql を使用してから何年も経ちます。
このデータベース内のすべてのテーブルのすべてのフィールドを印刷する方法を探しています。現時点では、私は使用しています
Show Fields from <insert table name>
ただし、これは遅くて不格好です。もっと速い方法はありますか?
これは、 MySQL オンライン リファレンスへのリンクです。これは、MySQL に関するすべての質問に対応する goto リソースです。
データベース内のすべての列を一覧表示するには、次のバリエーションを実行します。
select * from information_schema.columns order by table_schema, table_name, column_name
セクション 20 では、Information_schema について説明します。20.4 は列テーブルをカバーしています。
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 データベースへのアクセスが多少遅くなる可能性があるため、これが最も速い方法です。
試してみる !!!