Получить схему базы данных с одним запросом?

В основном я хочу получить имена таблиц и имена полей для каждой таблицы из текущей подключенной базы данных, ничего другого.

Это возможно?

Я знаю, что SHOW TABLES FROM my_database получает имена таблиц, а SHOW COLUMNS FROM my_table предоставит вам поля, но это, по крайней мере, [1 x # of tables] запросов, и я получаю больше информации, которую я хочу 🙂

Solutions Collecting From Web of "Получить схему базы данных с одним запросом?"

В таблице INFORMATION_SCHEMA.COLUMNS есть то, о чем вы просите.

 SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = 'YourDBName' ORDER BY table_name, ordinal_position 
 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; 
 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 

работает для SQLSERVER 2005. Названия столбцов могут быть разными для MySQL (я предполагаю, что это то, что вы используете), но концепция такая же.

«Показать базы данных», «Показать таблицы» и «описать таблицу» – лучший, самый быстрый способ, который я знаю в MySql.

Но они специфичны для MySql.

Если ты хочешь:

a) переносимый способ запроса вашей схемы базы данных

  ... AND ... 

б) более подробный контроль над вашим запросом, а затем ознакомьтесь с INFORMATION_SCHEMA:

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

СИНТАКСИС:

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

После нескольких испытаний я сделал этот код sql, чтобы увидеть столбцы в моей таблице.

 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