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.
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'
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]')
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]'
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)
pour ceux qui cherchent une réponse dans Oracle:
SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'
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
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.
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'
MySQL est le même:
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
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'
pour IBM DB2 (va revérifier ce lundi pour être sûr.)
SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'