Какъв е проблемът?
Когато пишете заявки за база данни, в която може да сте нов или такава, която се променя често, може да искате да изпълните бърза проверка, за да намерите всички таблици в конкретна база данни или колоните в базата данни, или да потърсите дали таблица или колона съществува.
Защо това е проблем?
Разбирането на схемата и какви таблици се съдържат в нея помага за написването на ефективен SQL и помага да се избегне изпълнението на заявки многократно, само за да се види дали името на схемата или името на колоната са правилни.
Този урок ще помогне за решаването на тези проблеми.
Използване на информационната схема
Запитването на метаданни в източник на данни е най-лесният начин да определите състава на таблицата, ако вече не сте я разбрали. Microsoft SQL Server предоставя изглед на информационна схема като един от няколкото метода за получаване на тези метаданни. Както се посочва в документацията им за поддръжка, „Изгледите на информационна схема предоставят вътрешен, независим от системна таблица изглед на метаданните на SQL Server. Изгледите на информационни схеми позволяват на приложенията да работят правилно, въпреки че са направени значителни промени в основните системни таблици."
Ще използваме няколко изгледа в информационната схема, за да изпълняваме заявки, които помагат да се определи състава на таблиците в източника на данни.
За показване на TABLES
и COLUMNS
в базата данни или намерете TABLES
и COLUMNS
.
Тази първа заявка ще върне всички таблици в базата данни, към която отправяте заявка.
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
Втората заявка ще върне списък с всички колони и таблици в базата данни, към която отправяте заявка.
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
Или можете също да направите заявка само за COLUMNS
от конкретна таблица и върнете имената на колоните от конкретната таблица „Албум“ в нашата база данни.
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Album'
С тази следваща заявка можете да разберете дали има или не TABLE
в източника на данни, който съответства на някакъв вид параметри за търсене.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = 'Album'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Заявката ще върне думата „found“, ако таблицата „Album“ съществува в нашата база данни.
Сега, за да отидете по-далеч, можете да използвате тази заявка, за да разберете дали има COLUMN
в източника на данни, който съответства на някакъв вид параметри за търсене.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME = 'Title'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Използване на INFORMATION_SCHEMA
изгледът във вашия източник на данни може да бъде надежден начин да определите какво има в източника на данни, докато изграждате заявките си.
За повече информация относно изгледите на схемата за системна информация на Microsoft SQL Server, моля, прочетете повече от техните документи за поддръжка.