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

dites que j'ai une table appelée myTable. Quelle est la commande SQL pour retourner tous les noms de champs de cette table? Si la réponse est spécifique à la base de données, alors J'ai besoin de SQL Server dès maintenant, mais je serais intéressé à voir la solution pour d'autres systèmes de base de données ainsi.

36
demandé sur WalkingRandomly 2008-09-19 12:33:25

12 réponses

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'

comment répondre: comme les gens ci-dessous ont dit, dans SQL Server vous pouvez également utiliser la procédure stockée sp_help

exec sp_help 'tablename'
57
répondu Vinko Vrsalovic 2015-06-27 07:32:08

SQL-92 standard définit INFORMATION_SCHEMA qui conforme rdbms comme support de serveur MS SQL. Les travaux suivants pour MS SQL Server 2000/2005/2008 et MySql 5 et au-dessus

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

MS SQl Server Specific:

exec sp_help 'myTable'

cette solution renvoie plusieurs ensembles de résultats dans lesquels sont les informations que vous désirez, où comme le premier vous donne exactement ce que vous voulez.

aussi juste pour l'exhaustivité vous pouvez interrogez les tables sys directement. 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 ici il est de toute façon pour SQL Server 2000

select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]')
10
répondu Holly Styles 2008-09-19 11:53:47

vous pouvez utiliser les vues système fournies pour faire ceci:

eg

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

alternativement, vous pouvez utiliser le système proc sp_help

eg

sp_help '[table name]'
4
répondu jules 2008-09-19 08:40:55

PostgreSQL comprend le

select column_name from information_schema.columns where table_name = 'myTable'
"151920920 de syntaxe". Si vous travaillez dans l'interpréteur de commandes psql, vous pouvez aussi utiliser

\d myTable

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

4
répondu dland 2008-09-19 12:33:43

pour ceux qui cherchent une réponse dans Oracle:

SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'
4
répondu Rene 2011-05-04 01:57:49

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
répondu 8jean 2008-09-19 19:38:51

C'est aussi MySQL spécifique:

show fields from [tablename];

cela ne montre pas seulement les noms de table, mais il tire aussi toutes les informations sur les champs.

2
répondu Steve Obbayi 2008-09-19 08:56:04

dans Sybase SQL Anywhere, les colonnes et les informations de table sont stockées séparément, donc vous avez 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
répondu Graeme Perrow 2008-09-19 19:45:10

MySQL est le même:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
1
répondu Veynom 2008-09-19 08:39:36

Si vous voulez juste les noms de colonne, puis

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

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

sp_help 'tablename'
1
répondu Matt Howells 2008-09-19 08:41:57

pour IBM DB2 (va revérifier ce lundi pour être sûr.)

SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'
1
répondu brabster 2015-11-25 11:43:47

MySQL

describe tablename
0
répondu Z99 2008-09-19 09:44:12