Чи можна якось отримати структуру бази даних 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 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 . Ви також можете запитувати таблиці СХЕМИ .
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
WHERE TABLE_SCHEMA= 'bodb' AND 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-клієнт (також доступний для 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