Pour les différents systèmes de base de données populaires, comment répertoriez-vous toutes les colonnes d'une table?
Pour les différents systèmes de base de données populaires, comment répertoriez-vous toutes les colonnes d'une table?
Réponses:
Pour MySQL, utilisez:
DESCRIBE name_of_table;
Cela fonctionne également pour Oracle tant que vous utilisez SQL * Plus ou Oracle Developer SQL.
DESCRIBE
name_of_table``;
DESCRIBE
ne s'agit pas d'une instruction Oracle PLSQL mais d' une commande SQL * Plus , et en tant que telle, elle ne fonctionne pas dans la plupart des IDE SQL.
Pour Oracle (PL / SQL)
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
Pour MySQL
SHOW COLUMNS FROM table_name
DESCRIBE name_of_table
.
user_tab_cols
votre requête?
Pour MS SQL Server:
select * from information_schema.columns where table_name = 'tableName'
information_schema.columns
la vue du système fait partie de la ANSI SQL
norme ( lien ).
select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
(5 ans plus tard, pour l'honneur de PostgreSQL, le DDBB le plus avancé 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 deuxième méthode est une norme ANSI et devrait donc fonctionner sur toutes les bases de données conformes à ANSI.
[
]
autour de lui, de sorte que la requête ne doit pas les utiliser, uniquement le nom de table simple. Si ce n'était pas l'intention du PO, sachez-le au moins.
<Table Name>
n'ai obtenu aucune correspondance :) Peut-être que BNF aurait évité l'ambiguïté. Quoi qu'il en soit, je me suis rendu compte que vous aviez peut-être voulu cela lorsque j'ai écrit le commentaire --- cela ne fait aucun mal d'avertir les autres au cas où.
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 appuyez sur ALT+F1 , vous obtiendrez une liste de noms de colonnes, type, longueur, etc.
ALT+ F1alors que vous avez mis en évidence dbo.MyTable
est l'équivalent de courirEXEC sp_help 'dbo.MyTable'
selon ce site
Je ne parviens pas à faire fonctionner les variantes d'interrogation de INFORMATION_SCHEMA.COLUMNS, je l'utilise donc à la place.
serveur SQL
Pour répertorier toutes les tables définies par l'utilisateur d'une base de données:
use [databasename]
select name from sysobjects where type = 'u'
Pour répertorier toutes les colonnes d'un tableau:
use [databasename]
select name from syscolumns where id=object_id('tablename')
Juste une légère correction sur les autres dans 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