Wie listen Sie für die verschiedenen gängigen Datenbanksysteme alle Spalten in einer Tabelle auf?
Wie listen Sie für die verschiedenen gängigen Datenbanksysteme alle Spalten in einer Tabelle auf?
Antworten:
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.
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)
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
Für MySQL
SHOW COLUMNS FROM table_name
DESCRIBE name_of_table
.
user_tab_cols
in Ihrer Anfrage?
Für MS SQL Server:
select * from information_schema.columns where table_name = 'tableName'
information_schema.columns
Die Systemansicht ist Teil des ANSI 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:
\d table_name
Oder mit SQL:
select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS
where table_name = 'table_name';
Ich weiß, dass es spät ist, 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'
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'
Der zweite Weg ist ein ANSI-Standard und sollte daher auf allen ANSI-kompatiblen Datenbanken funktionieren .
[
]
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.
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ü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.
SQL Server
So listen Sie alle benutzerdefinierten Tabellen einer Datenbank auf:
use [databasename]
select name from sysobjects where type = 'u'
So listen Sie alle Spalten einer Tabelle auf:
use [databasename]
select name from syscolumns where id=object_id('tablename')
Nur eine kleine Korrektur an den anderen in SQL Server (Schema-Präfix wird immer wichtiger!):
SELECT name
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.tablename');
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