SQL Server-nützliche Metadatenabfragen

Metadatenabfragen sind sehr hilfreich beim Ermitteln von Informationen für ein bestimmtes Datenbankschema. Datenbankinformationen, einschließlich Tabellen, Ansichten, Spaltennamen, Datentypen, Indizes und Tabelleneinschränkungen, stehen alle für solche Abfragen zur Verfügung.

In diesem Lernprogramm möchte ich einige nützliche Metadatenabfragen untersuchen.

Beginnen wir damit, die Liste der in der angegebenen Datenbank erstellten Tabellen zu finden.

select * aus information_schema.tables wobei table_type = "Basistabelle" ist;


Lassen Sie uns nun die Ansichten auflisten, die in der angegebenen Datenbank erstellt wurden.

select * aus information_schema.tables wobei table_type = "view" ist;


Lassen Sie uns eine Abfrage erstellen, die die Spaltennamen, Datentypen, ob die Spalte Null zulässt oder nicht, und die maximal zulässigen Zeichen in der Zeile auflistet.

select column_name, data_type, is_nullable, character_maximum_length aus information_schema.columns Dabei steht table_name = 'emp';


Diese Abfrage zeigt den Tabellennamen, die Objekt-ID, das Erstellungsdatum der Tabelle und den Zeitpunkt der letzten Änderung der Tabelle.

wähle name, object_id, create_date, modify_date aus sys.tables;


Das Auflisten der erstellten Indizes für eine Tabelle mit den Spaltennamen ist häufig erforderlich. In dieser Abfrage ist a.name der Tabellenname, für den Sie die Indizes auflisten. Durch das Entfernen der a.name-Bedingung können Sie alle erstellten Indizes in Ihrer Datenbank anzeigen.

SELECT a.name tabellenname, b.name indexname, d.name spaltenname FROM sys.tables a, sys.indexes b, sys.index_columns c, sys.columns d WHERE a.object_id = b.object_id UND b.object_id = c. object_id AND b.index_id = c.index_id AND c.object_id = d.object_id AND c.column_id = d.column_id AND a.name = 'emp';

Diese Abfrage listet die definierten Einschränkungen für Tabellen mit den Spaltennamen auf. In diesem Beispiel sehen wir die eindeutigen, Primär- oder Fremdschlüsseleinschränkungen der emp-Tabelle.

SELECT a.table_name, a.constraint_name, b.column_name, a.constraint_type FROM information_schema.table_constraints a, information_schema.key_column_usage b WHERE a.table_name = 'EMP' UND a.table_name = b.table_name = b.table_bata AND a.constraint_name = b.constraint_name;

Angenommen, Sie möchten eine schreiben 'Anzahl auswählen (1) aus Tabellenname' Abfrage für jede Tabelle in Ihrer Datenbank, aber Sie haben mehr als 100 Tabellen in Ihrer Datenbank. Anstatt für jede Tabelle eine eigene Abfrage zu schreiben, können Sie diese Abfragen mit SQL generieren. Daher können Sie SQL-Code schreiben, um SQL zu generieren.

SELECT 'select count (1) aus [' + table_name + '];' FROM information_schema.tables;