9 votes

Obtenir le schéma d'une base de données avec une seule requête ?

En gros, je veux obtenir les noms des tables et les noms des champs pour chaque table de la base de données actuelle qui est connectée, rien d'autre.

Est-ce possible ?

Je sais que SHOW TABLES FROM my_database vous donne les noms des tables, et SHOW COLUMNS FROM my_table vous donnera les champs, mais c'est au moins [1 x # de tables] requêtes et j'obtiens plus d'informations que je veux :)

16voto

Joe Stefanelli Points 72874

En INFORMATIONS_SCHEMA.COLUMNS La table a ce que vous demandez.

SELECT table_name, column_name
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_schema = 'YourDBName'
    ORDER BY table_name, ordinal_position

4voto

Matthew Points 10499
SELECT * 
FROM information_schema.tables t
JOIN information_schema.columns c ON t.TABLE_NAME = c.TABLE_NAME 
 AND t.TABLE_CATALOG=c.TABLE_CATALOG 
 AND t.TABLE_SCHEMA=c.TABLE_SCHEMA

fonctionne pour SQLSERVER 2005. Les noms des colonnes peuvent être différents pour MySQL (je suppose que c'est ce que vous utilisez), mais le concept est le même.

4voto

Mr. Elusive Points 320
SELECT t.name AS tblName,
SCHEMA_NAME(schema_id) AS [schemaName],
c.name AS colName
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
ORDER BY tblName;

1voto

paulsm4 Points 39422

"Montrer les bases de données", "Montrer les tables" et "Décrire la table" sont les meilleurs moyens, les plus rapides que je connaisse dans MySql.

Mais ils sont Spécifique à MySql.

Si tu veux :

a) un moyen portable d'interroger le schéma de votre base de données

 ... AND ...

b) un contrôle plus granulaire de votre requête, alors regardez dans INFORMATION_SCHEMA :

http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

SYNTAX :

SELECT table_name FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'
  [AND table_name LIKE 'wild']

0voto

Kambaa Points 374

Après quelques essais, j'ai fait ce code sql pour voir les colonnes de ma table.

SELECT 
TABLE_NAME as table_name, 
COLUMN_NAME as column_name, 
COLUMN_TYPE as data_type, 
COLUMN_DEFAULT as default_value, 
IS_NULLABLE as nullable,
COLUMN_KEY as constraints, 
EXTRA as constraints2, 
CHARACTER_SET_NAME as charset, 
COLLATION_NAME as collation 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_schema = '<YOUR_DATABASE_NAME>' 
AND TABLE_NAME='<YOUR_TABLE_NAME>' 
ORDER BY table_name, ordinal_position

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X