Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.7.5.6 SHOW COLUMNS 構文

SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]

SHOW COLUMNS は、特定のテーブル内のカラムに関する情報を表示します。これはビューに対しても機能します。LIKE 句 (存在する場合) は、どのカラム名と照合するかを示します。セクション21.32「SHOW ステートメントの拡張」で説明されているように、WHERE 句を指定すると、より一般的な条件を使用して行を選択できます。

SHOW COLUMNS は、ユーザーが何らかの権限を持っているカラムの情報のみを表示します。

mysql> SHOW COLUMNS FROM City;
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| Id         | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name       | char(35) | NO   |     |         |                |
| Country    | char(3)  | NO   | UNI |         |                |
| District   | char(20) | YES  | MUL |         |                |
| Population | int(11)  | NO   |     | 0       |                |
+------------+----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

データ型が、CREATE TABLE ステートメントに基づいて予測されるものと異なる場合は、テーブルの作成または変更時に MySQL によってデータ型が変更される場合があります。この状態が発生する条件は、セクション13.1.17.3「暗黙のカラム指定の変更」で説明されています。

FULL キーワードを指定すると、カラムの照合順序とコメント、およびユーザーが各カラムに対して持っている権限が出力に含まれます。

tbl_name FROM db_name 構文の代わりに db_name.tbl_name を使用できます。つまり、次の 2 つのステートメントは同等です。

mysql> SHOW COLUMNS FROM mytable FROM mydb;
mysql> SHOW COLUMNS FROM mydb.mytable;

SHOW COLUMNS は、テーブルカラムごとに次の値を表示します。

Field は、カラム名を示します。

Type は、カラムデータ型を示します。

Collation は、バイナリ以外の文字列カラムの場合は照合順序、その他のカラムの場合は NULL を示します。この値は、FULL キーワードを使用した場合にのみ表示されます。

Null フィールドには、このカラムに NULL 値を格納できる場合は YES、できない場合は NO が含まれます。

Key フィールドは、このカラムがインデックス設定されているかどうかを示します。

  • Key が空の場合、このカラムはインデックス設定されていないか、またはマルチカラム内のセカンダリカラム (一意でないインデックス) としてのみインデックス設定されているかのどちらかです。

  • KeyPRI の場合、このカラムは PRIMARY KEY であるか、またはマルチカラム PRIMARY KEY 内のいずれかのカラムです。

  • KeyUNI の場合、このカラムは UNIQUE インデックスの最初のカラムです。(UNIQUE インデックスは複数の NULL 値を許可しますが、そのカラムが NULL を許可するかどうかは Null フィールドをチェックすることによってわかります。)

  • KeyMUL の場合、このカラムは、特定の値がカラム内に複数回現れることが許可されている一意でないインデックスの最初のカラムです。

テーブルの特定のカラムに複数の Key 値が適用される場合、Key には、もっとも優先度の高い値が PRIUNIMUL の順序で表示されます。

UNIQUE インデックスは、NULL 値を含むことができず、かつテーブル内に PRIMARY KEY が存在しない場合は PRI として表示される可能性があります。UNIQUE インデックスは、複数のカラムが複合 UNIQUE インデックスを形成している場合は MUL として表示される可能性があります。このカラムの組み合わせは一意であるにもかかわらず、各カラムには引き続き、特定の値が複数回現れることがあります。

Default フィールドは、このカラムに割り当てられているデフォルト値を示します。このカラムの明示的なデフォルト値が NULL である場合や、カラム定義に DEFAULT 句が含まれていない場合、これは NULL です。

Extra フィールドには、特定のカラムに関して使用可能な任意の追加情報が含まれます。この値が空以外になるのは、AUTO_INCREMENT 属性を持つカラムに対する auto_increment と、ON UPDATE CURRENT_TIMESTAMP 属性を持つ TIMESTAMP または DATETIME カラムに対する on update CURRENT_TIMESTAMP です。

Privileges は、ユーザーがこのカラムに対して持っている権限を示します。この値は、FULL キーワードを使用した場合にのみ表示されます。

Comment は、このカラムに含まれている任意のコメントを示します。この値は、FULL キーワードを使用した場合にのみ表示されます。

SHOW FIELDSSHOW COLUMNS のシノニムです。また、mysqlshow db_name tbl_name コマンドを使用してテーブルのカラムを一覧表示することもできます。

DESCRIBE ステートメントは、SHOW COLUMNS と同様の情報を提供します。セクション13.8.1「DESCRIBE 構文」を参照してください。

また、SHOW CREATE TABLESHOW TABLE STATUS、および SHOW INDEX ステートメントでは、テーブルに関する情報も提供されます。セクション13.7.5「SHOW 構文」を参照してください。


User Comments
  Posted by Jeroen van den Eijkhof on November 20, 2004
When programming in PHP, ASP and the like I for example want to get the values from an "enum"

when querying like:
SHOW columns FROM table
if you load the result in an array it will look like this:
array([0],[Field],[1],[Type],[2],[Null],[3],[Key],[4],[Default],[5],[Extra])
Where the number, [x], gives the same value as the name, [name].

Good to know when getting the values for a enum field.
If you want to do this in PHP here is a good example:
http://se2.php.net/manual/en/function.mysql-fetch-field.php ->read user comments
  Posted by Son Nguyen on July 7, 2008
It's convenient to display information about a table, running status, server configurations. However, it is expensive! For example, a simple "SHOW COLUMNS FROM SomeTable" create a disk-based temporary table. Read more about it here: http://bugs.mysql.com/bug.php?id=10210

I would suggest query caching enabled also for this SHOW COLUMNS. Since the table is not gonna change very frequent.
  Posted by Baron Schwartz on April 30, 2009
Note that not all privileges are displayed when using FULL. For example, DELETE isn't shown. If you really need to know whether you have a given permission, the best way I know is to try the operation you want to do, and see if you get an error. For DELETE, for example, you can DELETE FROM tbl LIMIT 0.
Sign Up Login You must be logged in to post a comment.