Wie zeige ich die Spaltennamen einer Tabelle an?

17

Der Fall ist einfach: Sie haben eine MySQL-Datenbank, in der Sie nur eine SQL-Abfrageschnittstelle haben, und Sie möchten die Datenbankstruktur mit Abfragen kennen. Sie können Tabellen mit dem show tables;Befehl auflisten, aber wie sehen Sie die einzelnen Spaltennamen?

( SELECTAussage zeigt, Empty setob keine Daten vorhanden sind und somit NICHT verwendet werden können.)

mico
quelle
Bitte beachten Sie, dass die akzeptierte Lösung der unterste descBefehl ist. Neugierig, es ist das kürzeste, hat aber am wenigsten Stimmen. Für mich ist es auch das Beste.
mico
2
Sie haben nach einer einfachen SQL-Abfrage gefragt. Ihre Antwort ist nicht SQL, so dass die geringe Anzahl von Stimmen erklären kann. Wahrscheinlich sollten Sie den Titel Ihrer Abfrage in "So zeigen Sie die Spaltennamen einer Tabelle an"
Lennart
Gute Idee, jetzt passt meine Antwort besser zur Frage.
mico

Antworten:

36
select column_name from information_schema.columns where table_name='table'
msi77
quelle
2
Mittlerweile fand ich diese Abfrage auch sinnvoll: show create table <table_name>Wo Sie anstelle von <table_name> den Tabellennamen in Klartext setzen. Dies gibt auch die Typen an, während Ihr für einen Listungszweck sehr gut geeignet ist.
mico
Wie von @mico gesagt: "show create table tbl_name \ G" könnte Ihre Lösung sein. Siehe dev.mysql.com/doc/refman/5.7/de/show-create-table.html Der Teil "\ G" dient nur zum Formatieren der Ausgabe. Grüße.
2.
6

Die beste Lösung, die ich selbst herausgefunden habe, war der desc table_nameBefehl. Weitere Informationen finden Sie unter Auflisten von MySQL-Tabellen . Dieser Befehl enthält die Beschreibung einer Datenbanktabelle. Genau das habe ich versucht herauszufinden.

mico
quelle
6

Verwenden Sie die Funktion DATABASE () oder SCHEMA (), um sicherzustellen, dass Sie Spalten in einer Tabelle in der aktuellen Datenbank auflisten . Es gibt NULL zurück, wenn Sie sich nicht in einer aktuellen Datenbank befinden. Diese Abfrage zeigt die Spalten in einer Tabelle in der Reihenfolge an, in der die Spalten definiert wurden:

SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;
RolandoMySQLDBA
quelle
3

Ich bin nicht sicher , ob ich verstehe , was Sie mit Tabelle bedeuten Titel , aber Sie können die meisten Informationen über Tabellen und deren Spalten aus der bekommen INFORMATION_SCHEMA

ein Pferd ohne Name
quelle
3

Wie sehen Sie die einzelnen Tabellentitel?

Meinen Sie Tischkommentare ?

use stack;
create table t(v integer primary key) comment 'My Special Table';

show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t               |
+-----------------+

select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment    |
+------------+------------------+
| t          | My Special Table |
+------------+------------------+
Jack Douglas
quelle
Ich wollte diese Spaltennamen und habe dank schneller Antworten schon ein paar Möglichkeiten. Danke auch für diesen Kommentar, Jack.
mico
1
Stört es Sie, Ihre Frage ein wenig neu zu formulieren, um zu verdeutlichen, dass Sie nach Spalten suchen?
Jack Douglas
2
SHOW COLUMNS FROM mydb.mytable;

Dabei ist mydb die Datenbank, die die benötigte Tabelle enthält

mytable - ist der benötigte Tisch

Gibt Informationen zu Spalten zurück (z. B. Namen von Spalten, Typ usw.)

Rolya Chuma
quelle
1
Kleine Code-Schnipsel, die nicht erklären, wie sie das OP-Problem lösen, werden nicht empfohlen. Bitte versuchen Sie, Ihrer Antwort weitere Details hinzuzufügen.
Erik
0

Sie müssen information_schema.tablesund information_schema.columnszusammenfügen, um die Liste der Tabellen und deren Spaltendetails zu erhalten.

information_schema.columnszeigt nicht nur Details zu Tabellen, sondern auch Ansichten. Es gibt keine Möglichkeit, nur Tabellendetails aus dieser Systemansicht herauszufiltern.

Daher musst du mitmachen.

Beispielabfrage:

select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2 
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE' 
order by t.table_schema, t.table_name, c.column_name 
;
Sundar Kannan
quelle