Comment afficher les noms de colonne d'une table?

17

Le cas est simple: vous avez une base de données MySQL où vous n'avez qu'une interface de requête SQL et vous voulez connaître la structure de la base de données avec les requêtes. Vous pouvez lister les tables avec la show tables;commande, mais comment voyez-vous les noms de colonne individuels?

(L' SELECTinstruction indique Empty setsi aucune donnée n'est présente et NE peut PAS être utilisée ainsi.)

mico
la source
Veuillez noter que la solution acceptée est celle du bas concernant la desccommande. Curieux, c'est le plus court, mais il a le moins de votes. Pour moi, c'est aussi le meilleur.
mico
2
vous avez demandé une simple requête SQL. Votre réponse n'est pas SQL, ce qui peut expliquer le faible nombre de votes. Vous devriez probablement changer le titre de votre requête en: "Comment afficher les noms de colonne d'une table"
Lennart
Bonne idée, maintenant ma réponse correspond mieux à la question.
mico

Réponses:

36
select column_name from information_schema.columns where table_name='table'
msi77
la source
2
En attendant, j'ai trouvé cette requête également utile: show create table <table_name>où au lieu de <table_name> vous mettez le nom de la table en texte brut. Cela donne également les types tandis que celui-ci convient très bien à une liste.
mico
Comme l'a dit @mico: "show create table tbl_name \ G" pourrait être votre solution. Voir dev.mysql.com/doc/refman/5.7/en/show-create-table.html La partie "\ G" est ici uniquement pour formater la sortie. Cordialement.
tdaget
6

La meilleure solution que j'ai découverte par moi-même était la desc table_namecommande. Plus d'informations sont sur la liste des tables MySQL . Cette commande donne la description d'une table de base de données, ce qui est exactement ce que j'essayais de découvrir.

mico
la source
6

Pour vous assurer de répertorier les colonnes d'une table dans la base de données actuelle, utilisez la fonction DATABASE () ou SCHEMA () . Il renvoie NULL si vous n'êtes pas dans une base de données actuelle. Cette requête affichera les colonnes d'un tableau dans l'ordre dans lequel les colonnes ont été définies:

SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;
RolandoMySQLDBA
la source
3

Je ne suis pas sûr de comprendre ce que vous voulez dire avec les titres des tableaux , mais vous pouvez obtenir la plupart des informations sur les tableaux et leurs colonnes à partir de INFORMATION_SCHEMA

un cheval sans nom
la source
3

comment voyez-vous les titres des tableaux individuels?

Voulez-vous dire les commentaires du tableau ?

use stack;
create table t(v integer primary key) comment 'My Special Table';

show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t               |
+-----------------+

select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment    |
+------------+------------------+
| t          | My Special Table |
+------------+------------------+
Jack Douglas
la source
Je voulais ces noms de colonne et j'ai déjà quelques façons grâce à des réponses rapides. Merci aussi pour ce commentaire, Jack.
mico
1
Cela vous dérange-t-il de reformuler un peu votre question pour que ce soit plus clair que ce soit les colonnes que vous recherchez?
Jack Douglas
2
SHOW COLUMNS FROM mydb.mytable;

où mydb - est la base de données qui contient la table nécessaire

mytable - est la table nécessaire

Il retourne les informations des colonnes (par exemple, les noms des colonnes, le type, etc.)

Rolya Chuma
la source
1
Les petits extraits de code sans explication de la façon dont ils résolvent le problème de l'OP sont découragés. Veuillez essayer d'ajouter plus de détails à votre réponse.
Erik
0

Vous devez vous joindre information_schema.tableset information_schema.columnsensemble pour obtenir la liste des tableaux et les détails de leurs colonnes.

information_schema.columnsmontre non seulement des détails sur les tableaux, mais aussi des vues. Il n'existe aucun moyen de filtrer uniquement les détails du tableau à partir de cette vue système.

Vous devez donc vous inscrire.

Exemple de requête:

select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2 
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE' 
order by t.table_schema, t.table_name, c.column_name 
;
Sundar Kannan
la source