Lister les colonnes d'une table

Lister les colonnes d'une table - SQL/NoSQL - Programmation

Marsh Posté le 17-10-2005 à 18:52:41    

Salut,
 
Quelle est la commande SQL qui permet de voir la liste des colonnes dans une table ? (désolé, je débute).
 
Merci.

Reply

Marsh Posté le 17-10-2005 à 18:52:41   

Reply

Marsh Posté le 17-10-2005 à 18:54:34    

Reply

Marsh Posté le 17-10-2005 à 19:13:16    

Ca c'est avec mySql.
 
En gros, chaque SGBD a ses propres commandes pour ça.
 
Oracle:
 
SELECT column_name
FROM user_tab_columns
WHERE table_name = '<ta table>';

Reply

Marsh Posté le 17-10-2005 à 21:36:09    

Beegee a écrit :

Ca c'est avec mySql.
 
En gros, chaque SGBD a ses propres commandes pour ça.
 
Oracle:
 
SELECT column_name
FROM user_tab_columns
WHERE table_name = '<ta table>';


 
en oracle il y a plus simple
 
DESCRIBE nomtable;

Reply

Marsh Posté le 17-10-2005 à 22:59:42    

Ouaip, bien sûr, mais le SELECT permet de réutiliser les noms de colonnes si on doit faire un traitement ...

Reply

Marsh Posté le 18-10-2005 à 10:15:39    

la solution universelle (à condition d'avoir un connecteur ADO)
 
(et si, on trouve des connecteurs ADO aussi sous Unix et Mac, ça a beau être une technologie élaborée par Microsoft, c'est aujourd'hui un standard très répendu sur tous les systèmes)
 
http://forum.hardware.fr/hardwaref [...] 8218-1.htm
 
(ici, un script en VBS, mais ça peut être n'importe quel autre langage)
 
Seuls trucs à modifier : ajouter les types que je n'ai pas traîté dans le script. (je l'avais écrit à l'époque pour dupliquer une base Access dans une base MySQL)

Reply

Marsh Posté le 18-10-2005 à 10:16:59    

Sinon, un truc simple...
 
Pourquoi ne pas faire "select * form matable"
Et parcourir les fields ? Généralement, les connecteurs proposent un attribut qui permet de retrouver la colonne en cours de lecture...

Reply

Marsh Posté le 18-10-2005 à 10:29:59    

tiens, je suis en train de voir que le script que j'avais posté n'est pas à jour.
 
manque de bol, j'ai changé de boulot, et j'ai plus accès à l'intranet de mon ancienne boîte, où j'avais stocké la dernière version du script...

Reply

Marsh Posté le 18-10-2005 à 15:27:11    

Merci merci :)  je vais essayer tout ça (je suis sous Oracle).

Reply

Marsh Posté le 18-10-2005 à 16:30:11    

sinon, avec Oracle, t'as des tables système (par contre, je sais jamais comment elles s'appellent :D)

Reply

Marsh Posté le 18-10-2005 à 16:30:11   

Reply

Marsh Posté le 18-10-2005 à 16:36:32    

J'ai donné le SELECT plus haut ... :p

Reply

Marsh Posté le 18-10-2005 à 17:02:27    

t'as donné pour MySQL, de mémoire Oracle c'est pas ça le nom de la table ;)

Reply

Marsh Posté le 18-10-2005 à 17:05:49    

voilà la requête de base pour trouver les objets systèmes. à partir de là, t'as toutes les tables systèmes pour trouver de plus amples infos.
 
select *
from all_objects

Reply

Marsh Posté le 18-10-2005 à 18:24:24    

Ben oui, sous Oracle tu as :
 
all_objects (qui liste tous les objets, pas que les tables)
all_tables (toutes les tables, même systèmes)
all_tab_columns (toutes les colonnes de toutes les tables)
 
et en remplaçant 'all' par 'user', on voit les objets de l'utilisateur.

Reply

Marsh Posté le 18-10-2005 à 19:28:47    

ah ok :) dans ton post tu parlais de MySQL, donc j'ai pas cherché plus loin :D

Reply

Marsh Posté le 18-10-2005 à 20:17:07    

Arjuna a écrit :

Sinon, un truc simple...
 
Pourquoi ne pas faire "select * form matable"
Et parcourir les fields ? Généralement, les connecteurs proposent un attribut qui permet de retrouver la colonne en cours de lecture...


a la limite plutot
select * from matable
where condition_renvoyant_qu_un_resultat
 
parceque selectionner tout la table pour recuperer le nom des champs  :pt1cable:

Reply

Marsh Posté le 18-10-2005 à 20:35:10    

Même pas besoin que ça renvoie une ligne ...
 
select * form matable
where 1 = 0;
 
:D

Reply

Marsh Posté le 18-10-2005 à 20:40:14    

Beegee a écrit :

Même pas besoin que ça renvoie une ligne ...
 
select * form matable
where 1 = 0;
 
:D


le pb c'est que je suis pas sur qu'il soit possible de recuperer le nom des champs avec un connecteur si il n'y a pas de resultat

Reply

Marsh Posté le 18-10-2005 à 20:43:11    

Il me semble qu'on peut, mais je peux me tromper.

Reply

Marsh Posté le 19-10-2005 à 00:54:50    

moi je préfère

Code :
  1. select *
  2. from table
  3. where null is not null


 
C'est plus joli :D

Reply

Marsh Posté le 19-10-2005 à 00:55:45    

et oui, on peut normalement lire le nom des champs même si la requête ne renvoie pas de lignes.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed