Можно ли каким-то образом получить структуру базы данных MySQL или просто таблицу с простым запросом?
Или есть другой способ, как я могу это сделать?
Можно ли каким-то образом получить структуру базы данных MySQL или просто таблицу с простым запросом?
Или есть другой способ, как я могу это сделать?
Я думаю, что то, что вам нужно, DESCRIBE
DESCRIBE table;
Вы также можете использовать SHOW TABLES
SHOW TABLES;
чтобы получить список таблиц в вашей базе данных.
Чтобы получить всю структуру базы данных как набор CREATE TABLE, используйте mysqldump:
mysqldump database_name --compact --no-data
Для одиночных таблиц добавьте имя таблицы после имени db в mysqldump. Вы получаете те же результаты с SQL и SHOW CREATE TABLE:
SHOW CREATE TABLE table;
Или DESCRIBE, если вы предпочитаете список столбцов:
DESCRIBE table;
Посмотрите на таблицу INFORMATION_SCHEMA
. TABLES
. Он содержит метаданные обо всех ваших таблицах.
Пример:
SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'table1'
Преимущество этого по сравнению с другими методами заключается в том, что вы можете легко использовать такие запросы, как выше, как подзапросы в своих других запросах.
используя это:
SHOW CREATE TABLE `users`;
предоставит вам DDL для этой таблицы
DESCRIBE `users`
отобразит столбцы в этой таблице
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products';
где Table_schema
- имя базы данных
Чтобы запрос 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
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA
. COLUMNS
WHERE TABLE_SCHEMA
= 'bodb' И TABLE_NAME
= 'abc';
работает для получения всех имен столбцов
В настоящее время люди используют DESC
вместо DESCRIPTION
. Например:-
DESC users;
В следующем примере
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 | |
+-------+-------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+