Olá amigos!
Hoje falarei brevemente sobre um assunto bem interessante no SQL Server que são as views de sistema com informações de schema do banco de dados.
O que são views de sistema?
O Sql Server disponibiliza uma série de views para auxílio na localização de schema de tabelas, views, procedures, entre outras necessidades, facilitando em muito a localização e também a utilização dessas informações
Para quê servem?
Digamos que seja necessário saber em qual tabela temos uma coluna contendo a string “name” em seu nome. Uma forma de resolver isto seria usando a view sysobjects e a view syscolumns, conforme exemplo abaixo:
1 2 3 4 | SELECT * FROM SYSOBJECTS OBJ INNER JOIN SYSCOLUMNS COL ON OBJ.ID = COL.ID WHERE COL. NAME LIKE '%NAME%' |
Ótimo, isso funciona perfeitamente, porém existe uma forma mais fácil de fazer isto, usando as views de sistema. Em vez de usar isto, use isto:
1 2 | SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%name%' |
A vantagem mais notável é a sintaxe simplificada ao mesmo tempo uma gama maior de informações retornadas sem necessidade de fazer outros joins com outras views, como é necessário fazer quando usamos as views como sysobjects, syscolumns, etc. Sempre que forem utilizar estas views, é preciso usar o nome qualificado INFORMATION_SCHEMA.nome_da_view.
Abaixo uma lista das principais views do INFORMATION_SCHEMA e seus objetivos:
Nome | Descrição |
CHECK_CONSTRAINTS | Informações sobre as constraints das tabelas |
REFERENTIAL_CONSTRAINTS | Retorna uma linha para cada FOREIGN KEY no banco selecionado |
ROUTINES | Todas as funções definidas pelo usuário e stored procedures |
COLUMN_PRIVILEGES | Colunas com previlégios garantidos para ou pelo usuário atual |
ROUTINE_COLUMNS | Informações sobre as colunas usadas nas procedures e functions |
COLUMNS | Informações sobre todas as colunas |
SCHEMATA | Informações sobre os bancos de dados |
CONSTRAINT_COLUMN_USAGE | Colunas usadas nas constraints |
TABLE_CONSTRAINTS | Todas as restrições das tabelas |
CONSTRAINT_TABLE_USAGE | Tabelas que possuem uma restrição definida |
TABLE_PRIVILEGES | Tabelas com previlégio garantido para ou pelo usuário atual |
TABLES | Informações sobre as tabelas |
DOMAINS | Todos os tipos de dados definidos pelo usuário |
VIEW_COLUMN_USAGE | Informações sobre colunas utilizadas nas views |
KEY_COLUMN_USAGE | Colunas restringidas como uma chave |
VIEW_TABLE_USAGE | Tabelas usadas em uma View |
PARAMETERS | Todos os parametros para funções definidas pelo usuário e stored procedures |
VIEWS | Informações sobre as Views |
Por hora é isso, façam seus selects e avaliem a necessidade e utilização de cada uma das views citadas.
Referência: http://msdn.microsoft.com/en-us/library/ms186778.aspx