Ich arbeite an einer Anwendung, die mit mehreren Datenbankservern wie "MySQL" und "MS SQL Server" umgehen kann.
Ich möchte die Tabellennamen einer bestimmten Datenbank mithilfe einer allgemeinen Abfrage abrufen, die für alle Datenbanktypen geeignet sein sollte. Ich habe folgendes versucht:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Es werden jedoch Tabellennamen aller Datenbanken eines bestimmten Servers angegeben, aber ich möchte nur Tabellennamen der ausgewählten Datenbank abrufen. Wie kann ich diese Abfrage einschränken, um Tabellen einer bestimmten Datenbank abzurufen?
sql
sql-server
Awan
quelle
quelle
Antworten:
Wahrscheinlich aufgrund der Art und Weise, wie verschiedene SQL-DBMS mit Schemas umgehen.
Versuche Folgendes
Für SQL Server:
Für MySQL:
Für Oracle wäre das Äquivalent zu verwenden
DBA_TABLES
.quelle
USE dbName GO
für SQL-Server. Wenn Sie nicht die Verwendung von DB , Ergebnis wird nicht angezeigt, auch wenn es Tabellen in dieser DB.USE dbName GO
Präfix auf Server 2014.Von hier gestohlen :
quelle
Die folgende Abfrage wählt alle
Tables
in der Datenbank genannten ausDBName
:quelle
Wir können handeln, ohne dass
GO
Sie Semikolon verwenden können;
.quelle
Stellen Sie das einfach
DATABASE NAME
vorINFORMATION_SCHEMA.TABLES
:quelle
Verwenden Sie in MySQL:
Nach Auswahl der DB mit:
quelle
Ich habe diese Antwort nicht gesehen, aber hey, das ist was ich tue:
quelle
Für MySQL können Sie einfach machen. TABELLEN ANZEIGEN;
quelle
quelle
quelle
sp_MSforeachtable
?Wenn Sie mit mehreren Schemata auf einem MS SQL Server arbeiten, kann das SELECT-TABLE_NAME ohne gleichzeitige Auswahl von TABLE_SCHEMA von begrenztem Nutzen sein. Daher habe ich angenommen, dass wir an den Tabellen interessiert sind, die zu einem bekannten Schema gehören, wenn Sie MS SQL Server verwenden.
Ich habe die obige Abfrage mit SQL Server Management Studio unter Verwendung einer meiner SQL Server-Datenbanken und mit MySQL Workbench unter Verwendung einer MySQL-Datenbank getestet. In beiden Fällen werden die Tabellennamen angegeben.
Die Abfrage fasst die zwei verschiedenen Abfragen von Michael Baylon in eine zusammen, die dann auf beiden Datenbanktypen ausgeführt werden kann. Der erste Teil der WHERE-Klausel funktioniert für MySQL-Datenbanken und der zweite Teil (nach dem ODER) für MS SQL Server-Datenbanken. Es ist hässlich und logisch ein wenig falsch, da davon ausgegangen wird, dass es kein unerwünschtes Schema mit demselben Namen wie die Datenbank gibt. Dies kann jemandem helfen, der nach einer einzelnen Abfrage sucht, die auf beiden Datenbankservern ausgeführt werden kann.
quelle
UPDATE FÜR DIE NEUESTE VERSION VON MSSQL SERVER (17.7)
Oder
SELECT *
um alle Spalten zu bekommen.quelle
So wählen Sie die folgende Datenbankabfrage aus:
Jetzt
Jetzt können Sie die erstellten Tabellen unten in der Konsole sehen.
PFA.
quelle
Ja Orakel ist:
Dies ist der Fall, wenn Sie nur Objekte möchten, deren Eigentümer die angemeldeten sind, die
user/schema
Sie sonst verwenden könnenall_tables
oderdba_tables
die Systemtabellen enthalten.quelle
Aufbauend auf Michael Baylons Antwort brauchte ich eine Liste, die auch Schemainformationen enthielt, und so änderte ich seine Abfrage.
quelle
In unserer folgenden Oracle-Datenbank (PL / SQL) wird Code verwendet, um die Liste aller in unserer Datenbank vorhandenen Tabellen abzurufen.
und
beide arbeiten. Lass uns versuchen, deine zu finden.
quelle
Holen Sie sich einfach alle Improtanat-Informationen mit diesem unter SQL in MySQL
quelle