Ist es möglich, eine Struktur der MySQL-Datenbank oder nur eine Tabelle mit einer einfachen Abfrage zu erhalten?
Oder gibt es einen anderen Weg, wie kann ich das machen?
Ist es möglich, eine Struktur der MySQL-Datenbank oder nur eine Tabelle mit einer einfachen Abfrage zu erhalten?
Oder gibt es einen anderen Weg, wie kann ich das machen?
Antworten:
Ich denke, dass Sie danach suchen DESCRIBE
DESCRIBE table;
Sie können auch verwenden SHOW TABLES
SHOW TABLES;
um eine Liste der Tabellen in Ihrer Datenbank zu erhalten.
Verwenden Sie mysqldump, um die gesamte Datenbankstruktur als Satz von CREATE TABLE- Anweisungen abzurufen :
mysqldump database_name --compact --no-data
Fügen Sie für einzelne Tabellen den Tabellennamen nach dem Datenbanknamen in mysqldump hinzu. Mit SQL und SHOW CREATE TABLE erhalten Sie dieselben Ergebnisse :
SHOW CREATE TABLE table;
Oder BESCHREIBEN Sie, wenn Sie eine Spaltenauflistung bevorzugen:
DESCRIBE table;
show create table
war genau das, wonach ich gesucht habe. Vielen Dank!
Schauen Sie sich das an INFORMATION_SCHEMA
. TABLES
Tabelle. Es enthält Metadaten zu allen Ihren Tabellen.
Beispiel:
SELECT * FROM `INFORMATION_SCHEMA`.`TABLES`
WHERE TABLE_NAME LIKE 'table1'
Dies hat gegenüber anderen Methoden den Vorteil, dass Sie Abfragen wie die oben beschriebene problemlos als Unterabfragen in Ihren anderen Abfragen verwenden können.
information_schema
. columns
(Verwenden von columns
Tabelle anstelle von tables
? Weil tables
keine Informationen darüber enthalten, welche Typen die Tabellenspalten sind
mit diesem:
SHOW CREATE TABLE `users`;
gibt Ihnen die DDL für diese Tabelle
DESCRIBE `users`
listet die Spalten in dieser Tabelle auf
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products';
Wo Table_schema
ist der Datenbankname?
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';
Das ist die SHOW CREATE TABLE- Abfrage. Sie können auch die SCHEMA-TABELLEN abfragen .
SHOW CREATE TABLE YourTableName;
Eine Variation der ersten Antwort, die ich nützlich fand
Öffnen Sie Ihre Eingabeaufforderung und geben Sie ein (Sie müssen nicht bei Ihrem MySQL-Server angemeldet sein).
mysqldump -hlocalhost -u<root> -p<password> <dbname> --compact --no-data > </path_to_mydump/>mysql.dmp
AUSWÄHLEN COLUMN_NAME
VON INFORMATION_SCHEMA
. COLUMNS
WHERE TABLE_SCHEMA
= 'bodb' AND TABLE_NAME
= 'abc';
funktioniert zum Abrufen aller Spaltennamen
Im folgenden Beispiel
playground
ist der Datenbankname undequipment
ist der Tabellenname
Eine andere Möglichkeit ist die Verwendung von SHOW-COLUMNS: 5.5 (auch verfügbar für 5.5>
)
$ mysql -uroot -p<password> -h<host> -P<port> -e \
"SHOW COLUMNS FROM playground.equipment"
Und die Ausgabe:
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 | |
+-------+-------------+------+-----+---------+----------------+
Man kann auch mysqlshow-client (auch verfügbar für 5.5>
) wie folgt verwenden:
$ mysqlshow -uroot -p<password> -h<host> -P<port> \
playground equipment
Und die Ausgabe:
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