Comment répertoriez-vous toutes les colonnes d'une table pour les divers systèmes de base de données populaires?
Pour MySQL, utilisez:
DESCRIBE name_of_table;
Cela fonctionne également pour Oracle tant que vous utilisez SQL * Plus, ou le développeur SQL d'Oracle.
Pour Oracle (PL/SQL)
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
Pour MySQL
SHOW COLUMNS FROM table_name
Pour MS SQL Server:
select * from information_schema.columns where table_name = 'tableName'
(5 ans plus tard, pour l'honneur de PostgreSQL, la DDBB la plus avancée du Royaume)
Dans PostgreSQL:
\d table_name
Ou, en utilisant SQL:
select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS
where table_name = 'table_name';
Je sais qu'il est tard mais j'utilise cette commande pour Oracle:
select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'
Serveur SQL
SELECT
c.name
FROM
sys.objects o
INNER JOIN
sys.columns c
ON
c.object_id = o.object_id
AND o.name = 'Table_Name'
ou
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Table_Name'
La seconde méthode est une norme ANSI et donc devrait fonctionne sur toutes bases de données compatibles ANSI.
MS SQL Server:
sp_columns [nom_table]
Microsoft SQL Server Management Studio 2008 R2:
Dans un éditeur de requête, si vous mettez en surbrillance le texte du nom de la table (ex dbo.MyTable) et cliquez sur ALT+F1, vous obtiendrez une liste de noms de colonnes, type, longueur, etc.
ALT+F1 alors que vous avez mis en surbrillance dbo.MyTable
équivaut à exécuter EXEC sp_help 'dbo.MyTable'
selon ce site
Je ne parviens pas à utiliser les variantes d'interrogation de INFORMATION_SCHEMA.COLUMNS, je l'utilise donc à la place.
Pour SQL Server
sp_help tablename
Juste une légère correction sur les autres de SQL Server (le préfixe de schéma devient plus important!):
SELECT name
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.tablename');
Exemple:
select Table_name as [Table] , column_name as [Column] , Table_catalog as [Database], table_schema as [Schema] from information_schema.columns
where table_schema = 'dbo'
order by Table_name,COLUMN_NAME
Juste mon code
SQL Server
Pour lister toutes les tables définies par l'utilisateur d'une base de données:
use [databasename]
select name from sysobjects where type = 'u'
Pour lister toutes les colonnes d'un tableau:
use [databasename]
select name from syscolumns where id=object_id('tablename')