Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exibições do SQL Server INFORMATION_SCHEMA | Ver se existe uma tabela

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.