409 Stimmen

Alle Tabellennamen einer bestimmten Datenbank per SQL-Abfrage abrufen?

Ich arbeite an einer Anwendung, die mit mehreren Datenbankservern wie "MySQL" und "MS SQL Server" arbeiten kann.

Ich möchte die Tabellennamen einer bestimmten Datenbank mit einer allgemeinen Abfrage erhalten, die für alle Datenbanktypen geeignet sein sollte. Ich habe folgendes versucht:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'

Aber es gibt Tabellennamen aller Datenbanken eines bestimmten Servers, aber ich möchte nur die Tabellennamen der ausgewählten Datenbank erhalten. Wie kann ich diese Abfrage einschränken, um Tabellen einer bestimmten Datenbank zu erhalten?

636voto

Michael Baylon Punkte 6210

Wahrscheinlich liegt es an der Art und Weise, wie verschiedene SQL-DBMs mit Schemata umgehen.

Versuchen Sie Folgendes

Für SQL Server:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='dbName'

Für MySQL:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName' 

Für Oracle wäre das Äquivalent meiner Meinung nach die Verwendung von DBA_TABLES .

98voto

bla Punkte 5200

Gestohlen von aquí :

USE YOURDBNAME
GO 
SELECT *
FROM sys.Tables
GO

41voto

anishMarokey Punkte 11011

Die folgende Abfrage wählt alle Tables in der Datenbank mit dem Namen DBName :

USE DBName
GO 
SELECT *
FROM sys.Tables
GO

20voto

David S Punkte 201

Setzen Sie einfach die DATABASE NAME vor INFORMATION_SCHEMA.TABLES :

select table_name from YOUR_DATABASE.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'

19voto

Gopal00005 Punkte 1933
USE DBName;
SELECT * FROM sys.Tables;

Wir können auch ohne GO anstelle von können Sie Semikolon verwenden ; .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X