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.
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'
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]')
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)
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]'
Pour ceux qui recherchent 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
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'
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.
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'
Pour IBM DB2 (revérifiez cela lundi pour être sûr.)
SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'
MySQL est le même:
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
MySQL
describe tablename