Полезные системные представления MS SQL server
Сами по себе представления можно считать виртуальными таблицами. Они, представляя из себя ряд столбцов и строк данных, выполняют функцию фильтра таблиц, на которые представление ссылается. Ссылаться они могут как на одну, так и несколько таблиц и представлений независимо от того, текущая это база данных или нет. В чем состоит преимущество представлений? Они возвращают запрашиваемые данные в более удобной форме, упрощая тем самым комплексные запросы. Отличие их от таблиц заключается в том, что представления динамически извлекают необходимые пользователю данные.
Поговорим мы конкретно про системные представления, предоставляющие доступ к метаданным. С помощью них мы можем получить информацию об экземпляре SQL Server и всех объектах, которые в нем определены. Так представление sys.types позволяет получить сведения о всех системных и определенных пользователем типах данных.
Следующие системные представления могут быть наиболее полезными:
- servers
- databases
- tables
- views
- objects
- columns
- sysusers
- types
Некоторые представления являются производными от других. Так, к примеру, представление tables наследуется из представления objects, но возвращают разные уровни информации о необходимой таблице.
Если вы используете большое количество разобщенных таблиц или имеете дело с данными, составляющими сложную структуру, то использование системных представлений может облегчить и сделать более удобной работу с ними. Поиск необходимых данных в разобщенной системе станет проще. Являясь одним из способов получения метаданных, системные представления полезны для анализа системы и выявления ошибок на высоких уровнях.
К примеру, вы работаете с базой данных Интернет-магазина, состоящей из нескольких десятков связных таблиц. Вас интересует только цена товара (Price), независимо от других данных. Поиск в обозревателе объектов может затянуться, если вы не помните все столбцы каждой таблицы. Но использование системных представлений упростит этот процесс.
Как раз пригодились знания, что представления таблиц (sys.tables) наследованы напрямую от представлений объектов (sys.objects). Джойним их по общему полю object_id.
Необходимое нам поле находится в таблице Product.
Такие простые и банальные на первый взгляд приемы помогут сэкономить время на поиски нужной информации и избежать ошибок.