2009-10-16 12 views

Antwort

93

Für Oracle (PL/SQL)

SELECT column_name 
FROM user_tab_cols 
WHERE table_name = 'myTableName' 

Für MySQL

SHOW COLUMNS FROM table_name 
+3

Youd wahrscheinlich die Oracle-Abfrage von column_id bestellen möchten –

+4

Für Oracle gilt auch 'DESCRIBE name_of_table'. – Pigueiras

+0

Verwenden Sie ; Spalten in wie '%' anzeigen; Lassen Sie nur die Spalten auflisten, die mit dem angegebenen Präfix beginnen. Die Winkel natürlich auslassen. – rstackhouse

181

Für MySQL/Oracle, Verwendung:

DESCRIBE name_of_table; 
+2

+1. Dadurch werden alle Spalten in der Tabelle angezeigt und Details zu den einzelnen Spalten angezeigt. – Navigatron

+12

Diese Lösung ist für MYSQL nicht MSSQL –

+7

Das funktioniert auch für Oracle – dmvianna

12

MS SQL Server:

sp_columns [Tabellenname]

63

Für MS SQL Server:

select * from information_schema.columns where table_name = 'tableName' 
+5

Die Spalte von Interesse wäre hier COLUMN_NAME. – Buggieboy

+3

Dies sollte auf vielen DBMS funktionieren. Die 'information_schema.columns' Systemansicht ist Teil des' ANSI SQL' Standards ([link] (http://en.wikipedia.org/wiki/Information_schema)). –

+2

gute Antwort, aber um Duplikate zu vermeiden, würde ich verwenden: 'wählen Sie COLUMN_NAME aus information_schema.columns, wo Tabellenname = 'Tabellenname' und Tabellenname = 'Datenbankname'' – billynoah

18

SQL Server

SELECT 
    c.name 
FROM 
    sys.objects o 
INNER JOIN 
    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]' 

Die zweite Möglichkeit, ein ANSI-Standard ist und deshalb sollte Arbeit auf alle ANSI konforme Datenbanken.

+0

Keine von diesen funktionieren wie geschrieben (oder zumindest impliziert, wie ich es lese) für MS SQL Server. In beiden Fällen speichert die Tabellenname-Spalte den Namen _without_ any '[' '] drumherum, sodass die Abfrage sie nicht verwenden darf, sondern nur den Namen der einfachen Tabelle. Wenn das nicht die Absicht des OP war, dann sollte man sich dessen zumindest bewusst sein. – JonBrave

+0

@JonBrave - das ist richtig, die eckigen Klammern waren da um zu implizieren _ "fügen Sie Ihren Tabellennamen hier ein" _ :) –

+0

Als eckige Klammern, lese ich es als "_insert Ihren Tabellennamen in eckigen Klammern (wegen potenziell reserviertem Wort) here_ ", und dann keine Übereinstimmungen :) Vielleicht hätte BNF'

' die Mehrdeutigkeit vermieden. Wie auch immer, ich habe bemerkt, dass Sie das vielleicht beabsichtigt haben, als ich den Kommentar geschrieben habe - es schadet nicht, andere zu warnen, nur für den Fall. – JonBrave

3

SQL Server

Um alle benutzerdefinierten Tabellen einer Datenbank auflisten:

use [databasename] 
select name from sysobjects where type = 'u' 

alle Spalten einer Tabelle aufzulisten:

use [databasename] 
select name from syscolumns where id=object_id('tablename') 
+0

Heh? Das 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 das OP nicht wollte. –

+0

Ah, Entschuldigung. Ich habe es korrigiert. –

3

Nur eine leichte Korrektur auf den anderen in SQL Server (Schema-Präfix wird immer wichtiger!):

Server Management Studio 2008 R
SELECT name 
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID('dbo.tablename'); 
7

Microsoft SQL:

In einem Abfrage-Editor, wenn Sie den Text von Tabellennamen (ex dbo.MyTable) markieren und drücken ALT +F1, erhalten Sie eine Liste der Spaltennamen, Typ, Länge usw.

ALT +F1 während Sie dbo.MyTable markiert haben ist das Äquivalent EXEC sp_help 'dbo.MyTable'according to this site

0 von laufen

Ich kann die Variationen über die Abfrage von INFORMATION_SCHEMA.COLUMNS nicht funktionieren, also verwende ich diese stattdessen.

+0

Arbeitet nicht in SSMS 2012. Btw meinst du SQL Server Management Studio 2008? –

+0

Ja, genauer gesagt ich meinte Microsoft SQL Server Management Studio 2008 R2. Ich werde bearbeiten. – Leslie

+0

Alt + F1 funktioniert großartig. +1. –

4

Für SQL Server

sp_help tablename 
26

Ich weiß, es ist spät, aber ich verwende diesen Befehl für Oracle:

select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx' 
+1

Besser spät als nie =) – golem

+0

http://stackoverflow.com/questions/8739203/oracle-query-to-fetch-column-names/8739400#8739400 – zloctb

1

Beispiel:

select Table_name as [Table] , column_name as [Column] , Table_catalog as [Database], table_schema as [Schema] from information_schema.columns 
where table_schema = 'dbo' 
order by Table_name,COLUMN_NAME 

Nur mein Code

21

(5 Jahre später, f oder die Ehre, 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'; 
+4

sollte \ t table_name sein. \ dt Tabellenname listet die Beziehungen auf. – l85m

Verwandte Themen