フィールドとそのタイプのリストを表示するために「describetable」出力に取り組んでいます。主キーをリストの一番上に配置したいと思います。SQLを使用してdescribeの結果を並べ替える方法はないと思います('orderなど) PHPで並べ替えるのではなく、')で並べ替えます。
みんなどう思いますか?ありがとう
SHOW COLUMNS
またはを実行すると、実際には、名前付きテーブルに関する情報を取得するためにDESCRIBE TABLE
呼び出される組み込みの特別なデータベースを使用しているだけです。INFORMATION_SCHEMA
面白いことに、情報をテーブルとして返さないように見えるため、これらの関数によって返されたデータをテーブルのように機能させることはできません(並べ替え、サブクエリなど)。
SHOW
幸い、またはと同じルックアップを実行するように独自のクエリを設定できますDESCRIBE
。
select
COLUMN_NAME as "Field",
COLUMN_TYPE as "Type",
IS_NULLABLE as "Null",
COLUMN_KEY as "Key",
COLUMN_DEFAULT as "Default",
EXTRA as "Extra"
from
INFORMATION_SCHEMA.COLUMNS
where
TABLE_NAME = 'my table' and
TABLE_SCHEMA = 'my database'
-- add ordering --
order by COLUMN_TYPE;
あなたは正しいです。MySQLは常に実際の順序で列を出力します。つまり、テーブルのデータに物理的に格納されている順序です。
主キーが最初になるようにテーブル内で列を物理的に移動できますが、これにはMySQLがテーブルをロックし、データ全体を新しい順序で書き換える必要があります。それはほとんど価値がありません。
テーブルが実際にどのように構造化されているかに関係なく、優れた出力を表示することに関心がある場合は、おそらく単純なusort()
呼び出しを使用して、PHPで列を並べ替えることができます。
describeを使用せずに、ほとんどのdbmsによって提供されるスキーマ情報テーブルを使用してください。次に、単純な選択を使用して情報を取得できます。