Es sollte ein Abzeichen für das Schreiben einer Frage geben, die geschlossen wird, aber über 100 positive Stimmen erhält :) OTOH, es ist nicht überraschend, dass es keine akzeptierte Antwort gibt, da nach mehreren Datenbanken gefragt wird, sodass ich der Entscheidung zum Schließen nicht widerspreche . Ich bin nur froh, dass das Q & A hier ist.
ToolmakerSteve
Antworten:
254
Verwenden Sie für MySQL:
DESCRIBE name_of_table;
Dies funktioniert auch für Oracle, solange Sie SQL * Plus oder den SQL Developer von Oracle verwenden.
Bearbeiten, da DESCRIBEes sich nicht um eine Oracle PLSQL-Anweisung, sondern um einen SQL * Plus-Befehl handelt und daher in den meisten SQL-IDEs nicht funktioniert.
Wal
117
Für Oracle (PL / SQL)
SELECT column_name
FROM user_tab_cols
WHERE table_name ='myTableName'
Sie möchten wahrscheinlich die Oracle-Abfrage von column_id
David Aldridge
6
Für Oracle gilt auch DESCRIBE name_of_table.
Pigueiras
benutze <Datenbankname>; Spalten in <Tabellenname> wie '<Spaltenpräfix>%' anzeigen; Hier können Sie nur die Spalten auflisten, die mit dem angegebenen Präfix beginnen. Die spitzen Klammern natürlich weglassen.
Stapelhaus
Was ist user_tab_colsin Ihrer Anfrage?
Jogi
@Jogi - Google "oracle user_tab_cols" - in Oracle db integriert.
ToolmakerSteve
103
Für MS SQL Server:
select*from information_schema.columns where table_name ='tableName'
Dies sollte auf vielen DBMS funktionieren. information_schema.columnsDie Systemansicht ist Teil des ANSI SQLStandards ( Link ).
Bogdan Sahlean
3
Gute Antwort, aber um Duplikate zu vermeiden, würde ich verwenden:select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
Billynoah
Dies ist SQL-92 ANSI-kompatibel und sollte in allen Datenbankmodulen funktionieren.
Gareth Davidson
39
(5 Jahre später, zu Ehren von PostgreSQL, der fortschrittlichsten DDBB des Königreichs)
In PostgreSQL:
\d table_name
Oder mit SQL:
select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS
where table_name ='table_name';
Ich habe es in Oracle versucht und es hat nicht funktioniert. Der Spaltenname wurde gedruckt, aber sonst nichts. Ich musste SELECT CAST (COLUMN_NAME AS CHAR (40)) || verwenden '' || DATA_TYPE, um ein schönes Format zu erhalten und mehrere Spalten mit Verkettung zu erhalten.
Eamonn Kenny
27
SQL Server
SELECT
c.name
FROM
sys.objects o
INNERJOIN
sys.columns c
ON
c.object_id = o.object_id
AND o.name ='Table_Name'
oder
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME ='Table_Name'
Der zweite Weg ist ein ANSI-Standard und sollte daher auf allen ANSI-kompatiblen Datenbanken funktionieren .
Keines davon funktioniert für MS SQL Server wie geschrieben (oder zumindest impliziert, wie ich es lese). In beiden Fällen werden die Tabellenname Spalte speichert den Namen ohne jede []drum herum, so dass die Abfrage nicht benutzen müssen, nur die einfache Tabellennamen. Wenn dies nicht die Absicht des OP war, sollten Sie sich dessen zumindest bewusst sein.
JonBrave
1
@ JonBrave - das ist richtig, die eckigen Klammern waren da, um zu implizieren "Geben Sie hier Ihren Tabellennamen ein" :)
Russ Cam
Als eckige Klammern las ich es als " Fügen Sie Ihren Tabellennamen hier in eckige Klammern ein (wegen möglicherweise reservierten Wortes) " und bekam dann keine Übereinstimmungen :) Vielleicht <Table Name>hätte BNF die Mehrdeutigkeit vermieden. Wie auch immer, mir wurde klar, dass Sie das vielleicht beabsichtigt haben, als ich den Kommentar schrieb - es schadet nicht, andere nur für den Fall zu warnen.
JonBrave
1
Funktioniert nur für MSSQL, wenn kein '[]' vorhanden ist und die Anführungszeichen '' um den Tabellennamen herum benötigt werden.
Wenn Sie in einem Abfrageeditor den Text des Tabellennamens (ex dbo.MyTable) markieren und ALT+ drücken F1, erhalten Sie eine Liste mit Spaltennamen, Typ, Länge usw.
ALT+ F1während Sie hervorgehoben haben, dbo.MyTableentspricht dem Ausführen EXEC sp_help 'dbo.MyTable'gemäß dieser Site
Ich kann die Variationen beim Abfragen von INFORMATION_SCHEMA.COLUMNS nicht zum Laufen bringen, daher verwende ich diese stattdessen.
Heh? Dies ist einfach falsch ... Sie können USE nur für Datenbanken verwenden ... Und die Abfrage gibt alle benutzerdefinierten Tabellen in der Datenbank zurück, was vom OP nicht gewünscht wurde.
Antworten:
Verwenden Sie für MySQL:
Dies funktioniert auch für Oracle, solange Sie SQL * Plus oder den SQL Developer von Oracle verwenden.
quelle
DESCRIBE
name_of_table`` sein;DESCRIBE
es sich nicht um eine Oracle PLSQL-Anweisung, sondern um einen SQL * Plus-Befehl handelt und daher in den meisten SQL-IDEs nicht funktioniert.Für Oracle (PL / SQL)
Für MySQL
quelle
DESCRIBE name_of_table
.user_tab_cols
in Ihrer Anfrage?Für MS SQL Server:
quelle
information_schema.columns
Die Systemansicht ist Teil desANSI SQL
Standards ( Link ).select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
(5 Jahre später, zu Ehren von PostgreSQL, der fortschrittlichsten DDBB des Königreichs)
In PostgreSQL:
Oder mit SQL:
quelle
Ich weiß, dass es spät ist, aber ich verwende diesen Befehl für Oracle:
quelle
SQL Server
oder
Der zweite Weg ist ein ANSI-Standard und sollte daher auf allen ANSI-kompatiblen Datenbanken funktionieren .
quelle
[
]
drum herum, so dass die Abfrage nicht benutzen müssen, nur die einfache Tabellennamen. Wenn dies nicht die Absicht des OP war, sollten Sie sich dessen zumindest bewusst sein.<Table Name>
hätte BNF die Mehrdeutigkeit vermieden. Wie auch immer, mir wurde klar, dass Sie das vielleicht beabsichtigt haben, als ich den Kommentar schrieb - es schadet nicht, andere nur für den Fall zu warnen.MS SQL Server:
sp_columns [Tabellenname]
quelle
Microsoft SQL Server Management Studio 2008 R2:
Wenn Sie in einem Abfrageeditor den Text des Tabellennamens (ex dbo.MyTable) markieren und ALT+ drücken F1, erhalten Sie eine Liste mit Spaltennamen, Typ, Länge usw.
ALT+ F1während Sie hervorgehoben haben,
dbo.MyTable
entspricht dem AusführenEXEC sp_help 'dbo.MyTable'
gemäß dieser SiteIch kann die Variationen beim Abfragen von INFORMATION_SCHEMA.COLUMNS nicht zum Laufen bringen, daher verwende ich diese stattdessen.
quelle
SQL Server
So listen Sie alle benutzerdefinierten Tabellen einer Datenbank auf:
So listen Sie alle Spalten einer Tabelle auf:
quelle
Für SQL Server
quelle
Nur eine kleine Korrektur an den anderen in SQL Server (Schema-Präfix wird immer wichtiger!):
quelle
Beispiel:
Nur mein Code
quelle