Можно ли как-то получить структуру базы данных MySQL или просто таблицу с простым запросом?
Или есть другой способ, как я могу это сделать?
Можно ли как-то получить структуру базы данных MySQL или просто таблицу с простым запросом?
Или есть другой способ, как я могу это сделать?
Ответы:
Я думаю, что вы ищете DESCRIBE
DESCRIBE table;
Вы также можете использовать SHOW TABLES
SHOW TABLES;
чтобы получить список таблиц в вашей базе данных.
Чтобы получить всю структуру базы данных в виде набора операторов CREATE TABLE , используйте mysqldump :
mysqldump database_name --compact --no-data
Для отдельных таблиц добавьте имя таблицы после имени базы данных в mysqldump. Вы получаете те же результаты с SQL и SHOW CREATE TABLE :
SHOW CREATE TABLE table;
Или опишите, если вы предпочитаете список столбцов:
DESCRIBE table;
show create table
было именно то, что я искал. Спасибо!
Посмотрите на INFORMATION_SCHEMA
. TABLES
стол. Он содержит метаданные обо всех ваших таблицах.
Пример:
SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'table1'
Преимущество этого по сравнению с другими методами состоит в том, что вы можете легко использовать запросы, подобные приведенному выше, в качестве подзапросов в других ваших запросах.
information_schema
? columns
(используя columns
таблицу вместо tables
? Потому tables
что не содержит никакой информации о том, какие типы столбцов таблицы
используя это:
SHOW CREATE TABLE `users`;
даст вам DDL для этой таблицы
DESCRIBE `users`
будет перечислять столбцы в этой таблице
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products';
где Table_schema
имя базы данных
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_db_name' AND TABLE_NAME ='users';
Это запрос SHOW CREATE TABLE . Вы также можете запросить SCHEMA TABLES .
SHOW CREATE TABLE YourTableName;
Вариант первого ответа, который я нашел полезным
Откройте командную строку и введите (вам не нужно входить в свой сервер MySQL)
mysqldump -hlocalhost -u<root> -p<password> <dbname> --compact --no-data > </path_to_mydump/>mysql.dmp
ВЫБРАТЬ COLUMN_NAME
ИЗ INFORMATION_SCHEMA
. COLUMNS
ГДЕ TABLE_SCHEMA
= 'bodb' И TABLE_NAME
= 'abc';
работает для получения всех имен столбцов
В следующем примере
playground
имя базы данных иequipment
имя таблицы
Другой способ - использовать SHOW-COLUMNS: 5.5 (доступно также для 5.5>
)
$ mysql -uroot -p<password> -h<host> -P<port> -e \
"SHOW COLUMNS FROM playground.equipment"
И вывод:
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| type | varchar(50) | YES | | NULL | |
| quant | int(11) | YES | | NULL | |
| color | varchar(25) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
Можно также использовать mysqlshow-client (также доступен для 5.5>
), как показано ниже:
$ mysqlshow -uroot -p<password> -h<host> -P<port> \
playground equipment
И вывод:
mysqlshow: [Warning] Using a password on the command line interface can be insecure.
Database: playground Table: equipment
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| id | int(11) | | NO | PRI | | auto_increment | select,insert,update,references | |
| type | varchar(50) | latin1_swedish_ci | YES | | | | select,insert,update,references | |
| quant | int(11) | | YES | | | | select,insert,update,references | |
| color | varchar(25) | latin1_swedish_ci | YES | | | | select,insert,update,references | |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
SHOW TABLES FROM database_name