it-swarm.com.de

Was ist der SQL-Befehl, um die Feldnamen einer Tabelle zurückzugeben?

Angenommen, ich habe eine Tabelle mit dem Namen myTable. Was ist der SQL-Befehl, um alle Feldnamen dieser Tabelle zurückzugeben? Wenn die Antwort datenbankspezifisch ist, benötige ich momentan SQL Server, wäre aber daran interessiert, die Lösung auch für andere Datenbanksysteme zu finden.

37
WalkingRandomly

MySQL 3 und 4 (und 5):

desc tablename

das ist ein alias für

show fields from tablename

SQL Server (ab 2000) und MySQL 5:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'tablename'

Vervollständigen der Antwort: Wie die folgenden Personen bereits sagten, können Sie in SQL Server auch die gespeicherte Prozedur sp_help Verwenden.

exec sp_help 'tablename'
59
Vinko Vrsalovic

Der SQL-92-Standard definiert INFORMATION_SCHEMA, das rdbms-konform ist und MS SQL Server unterstützt. Das Folgende funktioniert für MS SQL Server 2000/2005/2008 und MySql 5 und höher

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'myTable'

MS SQL Server-spezifisch:

exec sp_help 'myTable'

Diese Lösung gibt mehrere Ergebnismengen zurück, in denen sich die gewünschten Informationen befinden, wobei die erste genau die gewünschten Informationen enthält.

Der Vollständigkeit halber können Sie die sys-Tabellen auch direkt abfragen. Dies wird nicht empfohlen, da das Schema zwischen den Versionen von SQL Server geändert werden kann und INFORMATION_SCHEMA eine Abstraktionsebene über diesen Tabellen ist. Aber hier ist es trotzdem für SQL Server 2000

select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]')
12
Black Squirrel

PostgreSQL versteht das

select column_name from information_schema.columns where table_name = 'myTable'

syntax. Wenn Sie in der Psql-Shell arbeiten, können Sie auch verwenden

\d myTable

für eine Beschreibung (Spalten sowie deren Datentypen und Einschränkungen)

4
dland

Sie können dazu die bereitgestellten Systemansichten verwenden:

z.B

select * from INFORMATION_SCHEMA.COLUMNS
where table_name = '[table name]'

alternativ können Sie das System proc sp_help verwenden

z.B

sp_help '[table name]'
4
jules

Für diejenigen, die nach einer Antwort in Oracle suchen:

SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'
4
Rene

Der Vollständigkeit halber, da MySQL und Postgres bereits erwähnt wurden: Verwenden Sie in SQLite "pragma table_info()".

sqlite> pragma table_info('table_name');
cid         name        type        notnull     dflt_value  pk        
----------  ----------  ----------  ----------  ----------  ----------
0           id          integer     99                      1         
1           name                    0                       0         
3
8jean

In Sybase SQL Anywhere werden die Spalten- und Tabelleninformationen separat gespeichert, sodass Sie einen Join benötigen:

select c.column_name from systabcol c 
       key join systab t on t.table_id=c.table_id 
       where t.table_name='tablename'
2
Graeme Perrow

Dies ist auch MySQL-spezifisch:

show fields from [tablename];

hier werden nicht nur die Tabellennamen angezeigt, sondern auch alle Informationen zu den Feldern abgerufen.

2
Steve Obbayi

Wenn Sie nur die Spaltennamen möchten, dann

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'

Verwenden Sie unter MS SQL Server, um weitere Informationen zur Tabelle zu erhalten, z. B. die Spaltentypen

sp_help 'tablename'
1
Matt Howells

Für IBM DB2 (wird dies am Montag überprüfen, um sicherzugehen.)

SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'
1
brabster

MySQL ist das gleiche:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
1
Veynom

MySQL

describe tablename
0
Z99