Na czym polega problem?
Podczas pisania zapytań dla bazy danych, w której jesteś nowy lub często się zmienia, możesz chcieć uruchomić szybkie sprawdzenie, aby znaleźć wszystkie tabele w określonej bazie danych lub kolumny w bazie danych, albo wyszukać tabelę lub kolumnę istnieje.
Dlaczego jest to problem?
Zrozumienie schematu i zawartych w nim tabel pomaga w pisaniu wydajnego kodu SQL i pozwala uniknąć wielokrotnego uruchamiania zapytań tylko po to, aby sprawdzić, czy nazwa schematu lub nazwa kolumny jest poprawna.
Ten samouczek pomoże rozwiązać te problemy.
Korzystanie ze schematu informacyjnego
Zapytanie o metadane w źródle danych to najprostszy sposób na określenie składu tabeli, jeśli jeszcze go nie rozumiesz. Microsoft SQL Server udostępnia widok schematu informacji jako jedną z kilku metod uzyskiwania tych metadanych. Jak stwierdza ich dokumentacja pomocy technicznej, „Widoki schematu informacji zapewniają wewnętrzny, niezależny od tabeli systemowej widok metadanych programu SQL Server. Widoki schematów informacji umożliwiają aplikacjom prawidłowe działanie, chociaż w podstawowych tabelach systemowych wprowadzono istotne zmiany”.
Użyjemy kilku widoków w schemacie informacji w celu uruchomienia zapytań, które pomogą określić skład tabel w źródle danych.
Wyświetlanie TABLES
i COLUMNS
w bazie danych lub znajdź TABLES
i COLUMNS
.
To pierwsze zapytanie zwróci wszystkie tabele w bazie danych, której dotyczy zapytanie.
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
Drugie zapytanie zwróci listę wszystkich kolumn i tabel w bazie danych, której dotyczy zapytanie.
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
Możesz też zapytać o tylko COLUMNS
z określonej tabeli i zwróć nazwy kolumn z określonej tabeli „Album” w naszej bazie danych.
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Album'
Za pomocą tego następnego zapytania możesz dowiedzieć się, czy istnieje TABLE
w źródle danych, które pasuje do pewnego rodzaju parametrów wyszukiwania.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = 'Album'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Zapytanie zwróci słowo „znaleziono”, jeśli tabela „Album” istnieje w naszej bazie danych.
Teraz, aby pójść trochę dalej, możesz użyć tego zapytania, aby dowiedzieć się, czy istnieje COLUMN
w źródle danych, które pasuje do pewnego rodzaju parametrów wyszukiwania.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME = 'Title'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Korzystanie z INFORMATION_SCHEMA
widok w źródle danych może być niezawodnym sposobem określenia, co znajduje się w źródle danych podczas tworzenia zapytań.
Aby uzyskać więcej informacji na temat widoków schematów informacji o systemie Microsoft SQL Server, zapoznaj się z ich dokumentacją pomocy technicznej.