Как получить структуру базы данных в MySQL через запрос - PullRequest
149 голосов
/ 22 мая 2009

Можно ли как-то получить структуру базы данных MySQL или просто таблицу с простым запросом?

Или есть другой способ, как я могу это сделать?

Ответы [ 9 ]

225 голосов
/ 22 мая 2009

Я думаю, что вы ищете DESCRIBE

DESCRIBE table;

Вы также можете использовать SHOW TABLES

SHOW TABLES;

чтобы получить список таблиц в вашей базе данных.

93 голосов
/ 22 мая 2009

Чтобы получить всю структуру базы данных в виде набора CREATE TABLE , используйте mysqldump :

mysqldump database_name --compact --no-data

Для отдельных таблиц добавьте имя таблицы после имени базы данных в mysqldump. Вы получаете те же результаты с SQL и SHOW CREATE TABLE :

SHOW CREATE TABLE table;

Или ОПИСАТЬ , если вы предпочитаете список столбцов:

DESCRIBE table;
38 голосов
/ 22 мая 2009

Посмотрите на таблицу INFORMATION_SCHEMA. TABLES. Он содержит метаданные обо всех ваших таблицах.

Пример:

SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'table1'

Преимущество этого по сравнению с другими методами состоит в том, что вы можете легко использовать запросы, подобные приведенному выше, как подзапросы в других ваших запросах.

27 голосов
/ 22 мая 2009

используя это:

SHOW CREATE TABLE `users`;

даст вам DDL для этой таблицы

DESCRIBE `users`

выведет список столбцов в этой таблице

16 голосов
/ 22 декабря 2013
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products'; 

где Table_schema - имя базы данных

11 голосов
/ 22 мая 2009

Это запрос SHOW CREATE TABLE . Вы также можете запросить SCHEMA TABLES .

SHOW CREATE TABLE YourTableName;
7 голосов
/ 20 февраля 2013

Вариант первого ответа, который я нашел полезным

Откройте командную строку и введите (вам не нужно заходить на сервер MySQL)

mysqldump -hlocalhost -u<root> -p<password>  <dbname>  --compact --no-data > </path_to_mydump/>mysql.dmp
1 голос
/ 09 марта 2016

ВЫБРАТЬ COLUMN_NAME ОТ INFORMATION_SCHEMA. COLUMNS ГДЕ TABLE_SCHEMA = 'Бодб' AND TABLE_NAME = 'abc';

работает для получения всех имен столбцов

0 голосов
/ 15 июня 2017

В настоящее время люди используют DESC вместо DESCRIPTION. Например:- DESC users;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...