Qual é o problema?
Ao escrever consultas para um banco de dados que você pode ser novo, ou um que muda com frequência, você pode querer executar uma verificação rápida para encontrar todas as tabelas em um banco de dados específico, ou as colunas no banco de dados, ou pesquisar se tabela ou coluna existe.
Por que isso é um problema?
Compreender o esquema e quais tabelas estão nele ajuda a escrever SQL eficiente e ajuda a evitar a execução de consultas várias vezes apenas para verificar se o nome do esquema ou da coluna está correto.
Este tutorial ajudará a resolver esses problemas.
Usando o esquema de informações
Consultar os metadados em uma fonte de dados é a maneira mais fácil de determinar a composição de uma tabela, caso você ainda não a tenha entendido. O Microsoft SQL Server fornece uma exibição de esquema de informações como um dos vários métodos para obter esses metadados. Como afirma a documentação de suporte, “As exibições do esquema de informações fornecem uma exibição interna independente da tabela do sistema dos metadados do SQL Server. As visualizações do esquema de informações permitem que os aplicativos funcionem corretamente, embora alterações significativas tenham sido feitas nas tabelas de sistema subjacentes.”
Usaremos algumas visualizações no esquema de informações para executar consultas que ajudam a determinar a composição das tabelas na fonte de dados.
Para Mostrar as
TABLES
e COLUMNS
no banco de dados ou encontre TABLES
e COLUMNS
. Essa primeira consulta retornará todas as tabelas do banco de dados que você está consultando.
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
A segunda consulta retornará uma lista de todas as colunas e tabelas do banco de dados que você está consultando.
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
Ou você também pode consultar apenas as
COLUMNS
de uma tabela específica e retornar os nomes das colunas da tabela específica ‘Album’ em nosso banco de dados. SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Album'
Com esta próxima consulta você pode descobrir se existe ou não uma
TABLE
na fonte de dados que corresponde a algum tipo de parâmetro de pesquisa. IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = 'Album'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
A consulta retornará a palavra ‘found’ se a tabela ‘Album’ existir em nosso banco de dados.
Agora, para ir um pouco mais longe, você pode usar esta consulta para descobrir se existe ou não uma
COLUMN
na fonte de dados que corresponde a algum tipo de parâmetro de pesquisa. IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME = 'Title'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Utilizando o
INFORMATION_SCHEMA
view em sua fonte de dados pode ser uma maneira confiável de determinar o que está na fonte de dados enquanto você cria suas consultas. Para obter mais informações sobre as exibições de esquema de informações do sistema do Microsoft SQL Server, leia mais em seus documentos de suporte.