MyTableというテーブルがあるとします。このテーブルのすべてのフィールド名を返すSQLコマンドは何ですか?答えがデータベース固有の場合、今すぐSQL Serverが必要ですが、他のデータベースシステムのソリューションも見たいと思っています。
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'
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]')
PostgreSQLは
select column_name from information_schema.columns where table_name = 'myTable'
構文。 psqlシェルで作業している場合は、次も使用できます。
\d myTable
説明(列、およびそのデータ型と制約)
これを行うには、提供されているシステムビューを使用できます。
例えば
select * from INFORMATION_SCHEMA.COLUMNS
where table_name = '[table name]'
あるいは、システムproc sp_helpを使用できます
例えば
sp_help '[table name]'
Oracleで答えを探している方へ:
SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'
完全を期すために、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
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'
これもMySQL固有です。
show fields from [tablename];
これはテーブル名を表示するだけでなく、フィールドに関するすべての情報も引き出します。
列名だけが必要な場合は、
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
MS SQL Serverでは、列のタイプなどのテーブルの詳細については、次を使用します。
sp_help 'tablename'
IBM DB2の場合(月曜日にこれを確認して確認してください。)
SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'
MySQLは同じです:
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
MySQL
describe tablename