web-dev-qa-db-fra.com

Quelle est la commande SQL pour renvoyer les noms de champ d'une table?

Disons que j'ai une table appelée myTable. Quelle est la commande SQL pour renvoyer tous les noms de champ de cette table? Si la réponse est spécifique à la base de données, j'ai besoin de SQL Server en ce moment, mais je serais également intéressé à voir la solution pour d'autres systèmes de base de données.

37
WalkingRandomly

MySQL 3 et 4 (et 5):

desc tablename

qui est un alias pour

show fields from tablename

SQL Server (à partir de 2000) et MySQL 5:

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

Compléter la réponse: comme l'ont dit les personnes ci-dessous, dans SQL Server, vous pouvez également utiliser la procédure stockée sp_help

exec sp_help 'tablename'
59
Vinko Vrsalovic

La norme SQL-92 définit INFORMATION_SCHEMA qui se conforme aux rdbms comme la prise en charge de MS SQL Server. Les travaux suivants pour MS SQL Server 2000/2005/2008 et MySql 5 et supérieur

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

Spécifique au serveur MS SQL:

exec sp_help 'myTable'

Cette solution renvoie plusieurs jeux de résultats dans lesquels se trouvent les informations que vous désirez, alors que le premier vous donne exactement ce que vous voulez.

Aussi, pour être complet, vous pouvez interroger directement les tables sys. Ceci n'est pas recommandé car le schéma peut changer entre les versions de SQL Server et INFORMATION_SCHEMA est une couche d'abstraction au-dessus de ces tables. Mais le voici quand même pour SQL Server 2000

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

PostgreSQL comprend la

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

syntaxe. Si vous travaillez dans le shell psql, vous pouvez également utiliser

\d myTable

pour une description (colonnes, et leurs types de données et contraintes)

4
dland

Pour ce faire, vous pouvez utiliser les vues système fournies:

par exemple

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

vous pouvez également utiliser le système proc sp_help

par exemple

sp_help '[table name]'
4
jules

Pour ceux qui recherchent une réponse dans Oracle:

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

Juste pour être complet, puisque MySQL et Postgres ont déjà été mentionnés: Avec SQLite, utilisez "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

Dans Sybase SQL Anywhere, les informations des colonnes et des tables sont stockées séparément, vous avez donc besoin d'une jointure:

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

Ceci est également spécifique à MySQL:

show fields from [tablename];

cela ne montre pas seulement les noms de table, mais il extrait également toutes les informations sur les champs.

2
Steve Obbayi

Si vous voulez juste les noms des colonnes, alors

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

Sur MS SQL Server, pour plus d'informations sur la table telles que les types de colonnes, utilisez

sp_help 'tablename'
1
Matt Howells

Pour IBM DB2 (revérifiez cela lundi pour être sûr.)

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

MySQL est le même:

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

MySQL

describe tablename
0
Z99