SQL Server – Usando as views de sistema
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:
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:
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
[]‘s