ケースは簡単です。SQLクエリインターフェイスのみを持つMySQLデータベースがあり、クエリのデータベース構造を知りたい場合。show tables;
コマンドを使用してテーブルを一覧表示できますが、個々の列名をどのように表示しますか?
(SELECT
ステートメントはEmpty set
データが存在せず、したがって使用できない場合に表示します。)
ケースは簡単です。SQLクエリインターフェイスのみを持つMySQLデータベースがあり、クエリのデータベース構造を知りたい場合。show tables;
コマンドを使用してテーブルを一覧表示できますが、個々の列名をどのように表示しますか?
(SELECT
ステートメントはEmpty set
データが存在せず、したがって使用できない場合に表示します。)
回答:
select column_name from information_schema.columns where table_name='table'
show create table <table_name>
<table_name>の代わりに、プレーンテキストでテーブル名を入力します。これはタイプも提供しますが、リストの目的には非常に適しています。
自分で見つけた最良の解決策は、desc table_name
コマンドでした。詳細については、MySQLテーブルのリストを参照してください。このコマンドは、1つのデータベーステーブルの説明を提供します。これはまさに私が見つけようとしていたものです。
現在のデータベースのテーブルに列を確実にリストするには、DATABASE()またはSCHEMA()関数を使用します。現在のデータベースにいない場合はNULLを返します。このクエリは、列が定義された順序でテーブルの列を表示します。
SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;
表のタイトルで何を意味するのかわかりませんが、テーブルとその列に関するほとんどの情報はINFORMATION_SCHEMAから取得できます。
個々のテーブルタイトルはどのように表示されますか?
use stack;
create table t(v integer primary key) comment 'My Special Table';
show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t |
+-----------------+
select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment |
+------------+------------------+
| t | My Special Table |
+------------+------------------+
テーブルとその列の詳細のリストを取得するにはinformation_schema.tables
、information_schema.columns
結合して結合する必要があります。
information_schema.columns
テーブルに関する詳細だけでなく、ビューも表示します。このシステムビューからテーブルの詳細のみをフィルタリングする方法はありません。
したがって、参加する必要があります。
クエリの例:
select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE'
order by t.table_schema, t.table_name, c.column_name
;
desc
コマンドに関する一番下の解決策であることに注意してください。好奇心が強い、それは最短ですが、投票数が最も少ないです。私にとっても最高です。