segunda-feira, 8 de novembro de 2010

Ordenação de colunas em uma tabela.

Quem nunca teve o seguinte problema...

Ao acessar a estrutura de uma tabela através do comando SP_HELP, você tem a intenção de identificar as configurações de uma determinada coluna. Para qualquer pessoa que mexa com banco de dados a dois dias, sabe como fazer.

Mas o problema que vejo com muitas pessoas e até eu ver isso em um fórum, também achava muito chato, era quando este comando é executado em uma tabela com centenas de colunas!!!! Isso mesmo, CENTENAS...Ficar na barra de rolagem não é muito agradavél...

No SQL quando criamos colunas nas tabelas, elas são armazenadas na ordem em que são criadas, e isso dá muito trabalho para ficar achando a informação da coluna conforme já mencionado acima.

Com a consulta abaixo, resolveremos isso. Conseguiremos trazer as informações por qualquer ordem que desejarmos.

SELECT TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TABLE1'
ORDER BY COLUMN_NAME

Resolvi postar esta informação depois de ouvir vários comentários a respeito. Com isso diminuimos um pouco a chatice da barra de rolagem....rsrsrs.

Obs.: Apenas como informação complementar, podemos ter as informações das colunas das tabelas pela view de sistema SYS.COLUMNS. Interessante ver o último post com um link para maiores detalhes.

Até a próxima,

Quando uma tabela foi criada?

Durante um processo de analise de algumas bases, onde estava sendo feita uma comparação de duas bases afim de garantir que os objetos/estrutura estavam iguais, identifiquei que alguns objetos estavam diferentes.

Diante disto precisei da seguinte informação (E creio que muita gente já fez a mesma pergunta): QUANDO ESTA TABELA FOI CRIADA???? Todo DBA já fez este questionamento....
Outro questionamento também é: QUANDO FOI A ÚLTIMA VEZ QUE MINHA TABELA SOFREU UMA ALTERAÇÃO?

Venho através deste post responder a estas perguntas.

Com a consulta abaixo conseguiremos responder ao questionamento:

SELECT SCHEMA_NAME(SCHEMA_ID) As Esquema, Name As Nome, Create_Date As Criacao, Modify_Date As Modificacao

FROM SYS.TABLES
ORDER BY Modificacao DESC

Através da SYS.TABLES temos algumas informações das tabelas de nosso banco.

Uma dica que gostaria que todos pudessem fazer, é averiguar sobre estas views de sistema.

Acessem o link: http://msdn.microsoft.com/pt-br/library/ms189783.aspx

e estudem sobre os principais tipos. Elas são muito utéis e ajudam muito a resolver vários problemas no processo de desenvolvimento.

Até mais,

Encontrando tabelas no SQL e no Oracle

Segue aqui informação importante e consideravel para agilizar busca de tabelas no SQL Server e também no Oracle.

Temos situações importantes em que precisamos encontrar algumas tabelas dentro do banco de dados. A medida em que o banco de nossa empresa vai crescendo, temos que ter formas rápidas de encontrar estes objetos.

No SQL 2008 temos duas formas:
SELECT * FROM SYS.TABLES e SELECT * FROM SYS.OBJECTS WHERE TYPE = 'U'

Onde na segunda consulta temos o filtro TYPE = 'U' que significa USER_TABLE, ou Tabela de Usuário. Pois temos no SQL o conceito de schema, que podemos ter objetos de mesmo nome mas em schemas diferentes.

No Oracle temos o seguinte comando:
SELECT * FROM DBA_TABLES ou SELECT * FROM USER_TABLES

Assim como no SQL o Oracle tem o conceito de owner ou o dono da tabela. O que significa isso?

Quando estamos no Oracle, acessamos sempre com algum usuário. Se estamos logados no Oracle com o usuário USER1, criamos a tabela CLIENTES e se logarmos com outro usuário, por exemplo, USER2 e rodarmos a segunda consulta buscando pela tabela CLIENTES nada será retornado.
Diferente da primeira consulta, que traz todas as tabelas independente do owner, a segunda filtra sempre pelo usuário logado naquela seção.

Então esta foi uma demonstração de como realizar busca de tabelas no SQL e no Oracle.