2009-05-22 9 views

Antwort

177

Ich denke, dass das, was du bist nachdem es DESCRIBE

DESCRIBE table; 
auch

können Sie SHOW TABLES

SHOW TABLES; 

verwenden, um eine Liste der Tabellen in der Datenbank zu erhalten.

+3

Um eine bestimmte Datenbank zu verwenden, verwenden Sie: 'SHOW TABLES FROM database_name' – Tarik

25

mit diesem:

SHOW CREATE TABLE `users`; 

geben Ihnen die DDL für diese Tabelle

DESCRIBE `users` 

werden die Spalten in der Tabelle Liste

+0

-1 DDL eine Sprache ist, während das, was Sie mit SHOW CREATE TABLE erhalten, ist eine Aussage – soulmerge

+0

soulmerge, sicher, dass es eine DDL-Anweisung für diese Tabelle – duckyflip

+0

Ja, es ist eine Aussage in einem DDL, sondern ein C-Funktion ist nicht von selbst C. C ist eine Sprache, eine Funktion in einem C-Programm ist ein Konstrukt innerhalb dieser Sprache. – soulmerge

32

Werfen Sie einen Blick auf die 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 den Vorteil gegenüber anderen Methoden ist, dass man leicht Abfragen wie die oben als Unterabfragen in Ihren anderen Abfragen verwenden können.

+1

Sollte es nicht' information_schema'.columns' sein (mit 'columns' table anstelle von' tables'? Weil 'tables' keine enthält Informationen darüber, welche Typen die Tabellenspalten sind –

+0

Der zweite Vorteil ist, dass das Informationsschema im Speicher beim Serverstart geladen wird, so dass kein hdd-Lesen erforderlich ist – bortunac

82

Um die gesamte Datenbankstruktur als eine Reihe von CREATE TABLE Aussagen zu erhalten, verwenden mysqldump:

mysqldump database_name --compact --no-data 

Für einzelne Tabellen, die Tabellennamen nach DB-Namen in mysqldump hinzuzufügen. Sie erhalten die gleichen Ergebnisse mit SQL und SHOW CREATE TABLE:

SHOW CREATE TABLE table; 

Oder DESCRIBE, wenn Sie eine Spalte Angebot bevorzugen:

DESCRIBE table; 
+2

'show create table' war genau das, was ich gesucht habe.Danke! – Shai

+0

das ist nicht die Lösung aber ich bin dankbar, weil ich nicht wusste, dass diese Funktion existiert und ist großartig! – AriWais

7

Eine Variation der ersten Antwort, die ich nützlich

Öffnen Sie Ihren Befehl gefunden Eingabeaufforderung und Eingabe (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 
+0

Ich mag dies, es gibt die create-Anweisungen. – Thufir

14
SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME ='products'; 

wo Table_schema Datenbankname

+1

Obwohl das nützlich war.Kann nicht wissen, warum jemand es nicht gemocht hat. – tulio84z

+0

gibt es einen Weg Informationen Schema auswählen Spalten - Tabellen aus bestimmten db? – Shan

1

SELECT COLUMN_NAME VON INFORMATION_SCHEMA ist.COLUMNS WHERE TABLE_SCHEMA = 'bodb' UND TABLE_NAME = 'abc';

Werke für alle Spaltennamen bekommen

0

Heute verwenden die Menschen DESC statt DESCRIPTION. Zum Beispiel: - DESC users;