web-dev-qa-db-ja.com

テーブルのフィールド名を返すSQLコマンドとは何ですか?

MyTableというテーブルがあるとします。このテーブルのすべてのフィールド名を返すSQLコマンドは何ですか?答えがデータベース固有の場合、今すぐSQL Serverが必要ですが、他のデータベースシステムのソリューションも見たいと思っています。

37
WalkingRandomly

MySQL 3および4(および5):

desc tablename

これは別名です

show fields from tablename

SQL Server(2000以降)およびMySQL 5:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'tablename'

答えを完成させる:以下の人が言ったように、SQL Serverではストアドプロシージャsp_help

exec sp_help 'tablename'
59
Vinko Vrsalovic

SQL-92標準では、MS SQL Serverサポートのようなrdbmsに準拠するINFORMATION_SCHEMAが定義されています。以下は、MS SQL Server 2000/2005/2008およびMySql 5以上で動作します

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'myTable'

MS SQlサーバー固有:

exec sp_help 'myTable'

このソリューションはいくつかの結果セットを返します。その中に希望する情報があり、前者では必要な情報が正確に提供されます。

また、完全を期すために、sysテーブルを直接クエリすることもできます。 SQL Serverのバージョン間でスキーマが変更される可能性があり、INFORMATION_SCHEMAはこれらのテーブルの上の抽象化レイヤーであるため、これは推奨されません。しかし、これはとにかくSQL Server 2000の

select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]')
12
Black Squirrel

PostgreSQLは

select column_name from information_schema.columns where table_name = 'myTable'

構文。 psqlシェルで作業している場合は、次も使用できます。

\d myTable

説明(列、およびそのデータ型と制約)

4
dland

これを行うには、提供されているシステムビューを使用できます。

例えば

select * from INFORMATION_SCHEMA.COLUMNS
where table_name = '[table name]'

あるいは、システムproc sp_helpを使用できます

例えば

sp_help '[table name]'
4
jules

Oracleで答えを探している方へ:

SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'
4
Rene

完全を期すために、MySQLとPostgresについては既に説明しているため、SQLiteでは "pragma table_info()"を使用します

sqlite> pragma table_info('table_name');
cid         name        type        notnull     dflt_value  pk        
----------  ----------  ----------  ----------  ----------  ----------
0           id          integer     99                      1         
1           name                    0                       0         
3
8jean

Sybase SQL Anywhereでは、列とテーブルの情報は別々に保存されるため、結合が必要です。

select c.column_name from systabcol c 
       key join systab t on t.table_id=c.table_id 
       where t.table_name='tablename'
2
Graeme Perrow

これもMySQL固有です。

show fields from [tablename];

これはテーブル名を表示するだけでなく、フィールドに関するすべての情報も引き出します。

2
Steve Obbayi

列名だけが必要な場合は、

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'

MS SQL Serverでは、列のタイプなどのテーブルの詳細については、次を使用します。

sp_help 'tablename'
1
Matt Howells

IBM DB2の場合(月曜日にこれを確認して確認してください。)

SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'
1
brabster

MySQLは同じです:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
1
Veynom

MySQL

describe tablename
0
Z99