Um dos comandos bastante utilizados no Oracle para verificar
estrutura de tabelas e tipos de campos é o comando DESC abreviação de describe,
descrever.
Este comando descreve a estrutura de tabelas com suas
colunas e tipo de dados.
O SQL Server possui DESC para “descrever” uma tabela?
Na realidade não, o SQL Server trabalha com estes comandos
de uma forma um pouco diferente.
O Oracle possui comandos, que são nomes reservados para
determinadas funções.
O SQL Server trabalha com system stored procedures,
procedimentos armazenados do sistema, estes são responsáveis por armazenar
blocos T-SQL que buscam informações.
Um destes procedimentos o qual usamos para esta mesma
finalidade é o sp_columns este procedimento resulta em
uma busca de todas as informações sobre os campos de uma determinada tabela.
Como no exemplo:
use
[AdventureWorks]
GO
sp_columns
AWBuildVersion
| AWBuildVersion | SystemInformationID | -6 | tinyint identity | 3 | 1 | 0 | 10 | 0 | NULL | NULL | -6 | NULL | NULL | 1 | NO | 48 |
| AWBuildVersion | Database Version | -9 | nvarchar | 25 | 50 | NULL | NULL | 0 | NULL | NULL | -9 | NULL | 50 | 2 | NO | 39 |
| AWBuildVersion | VersionDate | 11 | datetime | 23 | 16 | 3 | NULL | 0 | NULL | NULL | 9 | 3 | NULL | 3 | NO | 61 |
| AWBuildVersion | ModifiedDate | 11 | datetime | 23 | 16 | 3 | NULL | 0 | NULL | (getdate()) | 9 | 3 | NULL | 4 | NO | 61 |
Além disto, é uma boa prática comentarmos em nosso banco de
dados qual a serventia de cada campo, tabela, enfim, é sempre extremamente
importante qualquer tipo de documentação.
Banco de dados também possui recursos para deixarmos tudo
bem documentado.
O Oracle possui:
COMMENT ON TABLE TABELA IS 'Descrição
da tabela'
COMMENT ON COLUMN TABELA.CAMPO IS
'Descrição sobre utilização do campo'
Pois bem, o SQL Server possui uma forma diferenciada de
trabalhar com estas “documentações”.
O SQL Server possui uma lista de propriedades estendidas,
extend property. Nesta lista é possível dar nome a propriedade desejada e
incluir informações sobre ela.
Por exemplo, criar duas ou mais propriedades estendidas, uma
identificando para que serve o campo e outra explicando a representação dos
valores.
A nomenclatura padrão do SQL Server para propriedade é
MS_Description outras mais ficam a customização de cada DBA.
Campo Sexo:
Descrição: Campo que identifica sexo do cliente.
Valores: M representa Masculino e F representa Feminino.
Então vamos para prática:
Comentário de Tabela
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Current version number of the AdventureWorks sample
database. ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AWBuildVersion'
GO
| TABLE | AWBuildVersion | Current version number of the AdventureWorks sample database. |
Comentário de coluna
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Date and time the record was last updated.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AWBuildVersion', @level2type=N'COLUMN',@level2name=N'ModifiedDate'
GO
| COLUMN | SystemInformationID | Primary key for AWBuildVersion records. |
| COLUMN | Database Version | Version number of the database in 9.yy.mm.dd.00 format. |
| COLUMN | VersionDate | Date and time the record was last updated. |
| COLUMN | ModifiedDate | Date and time the record was last updated. |
Estas propriedades podem ser acessadas através do SQL Server Management
Studio visualizando as propriedades do campo ou tabela que deseja consultar ou
uma consulta no banco de dados que retorna estes dados:
Consulta descrição
da tabela
SELECT objtype, objname, value
FROM fn_listextendedproperty
('MS_Description', 'schema', 'dbo', 'table', default, NULL, NULL)
where objname = 'AWBuildVersion'
SELECT objtype, objname, value
FROM fn_listextendedproperty
('MS_Description', 'schema', 'dbo', 'table', default, NULL, NULL)
where objname = 'AWBuildVersion'
Consulta
descrição das colunas
SELECT objtype, objname, value
FROM fn_listextendedproperty
('MS_Description', 'schema', 'dbo', 'table', 'AWBuildVersion', 'column', default)
Para concluirmos caso necessite maiores informações sobre uma determinada
tabela, pode ser utilizado uma SP que é bastante utilizada no SQL Server sp_help basta utilizar este comando
passando a tabela que seja visualizar informações, como segue na imagem.
Acredito que estas opções contemplem a maior parte das necessidades sobre
consulta de informações de uma tabela.
Obrigado e até a próxima.