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

5 maneiras de contar o número de tabelas definidas pelo usuário em um banco de dados SQL Server


Abaixo estão cinco métodos que você pode usar para determinar rapidamente quantas tabelas definidas pelo usuário estão no banco de dados atual no SQL Server.

Todas as cinco opções usam o COUNT() função para obter a contagem. Obviamente, você pode substituir isso por um asterisco (* ), ou os nomes das colunas para retornar uma lista de todas as tabelas definidas pelo usuário.


Opção 1 – sys.tables


A maneira mais óbvia de fazer isso é consultar o sys.tables visualização do catálogo do sistema. Todo o propósito desta visão é retornar uma linha para cada tabela de usuário, então é exatamente o que precisamos.
USE WideWorldImportersDW;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.tables;

Resultado:
+-------------------------+
| Number of User Tables   |
|-------------------------|
| 29                      |
+-------------------------+

Neste caso eu retorno o número de tabelas de usuários do WideWorldImportersDW base de dados.

Se eu mudar para outro banco de dados, recebo um resultado diferente:
USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.tables;

Resultado:
+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Como mencionado, você pode listar as tabelas simplesmente substituindo o COUNT(*) linha com um asterisco (* ) ou os nomes das colunas:
USE Music;
SELECT name
FROM sys.tables;

Resultado:
+---------+
| name    |
|---------|
| Artists |
| Genres  |
| Albums  |
| Country |
+---------+

Opção 2 – Filtrar sys.objects por tipo


Outra opção é consultar o sys.objects visualização do catálogo.
USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE type = 'U';

Resultado:
+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Neste caso, você precisa filtrar por type = 'U' (U é para “Tabela de Usuário”).

Opção 3 – Filtrar sys.objects por “Descrição do tipo”


Outra maneira de consultar o sys.objects view é filtrar os resultados pelo type_desc coluna.
USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE type_desc = 'USER_TABLE';

Resultado:
+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Opção 4 – Filtrar sys.objects usando a função OBJECTPROPERTY()


Você também pode usar o OBJECTPROPERTY() função em seu WHERE cláusula.

Esta função aceita dois argumentos:um ID de objeto e uma propriedade. O ID do objeto pode ser o ID da tabela e a propriedade pode ser IsUserTable , que determina se o objeto é ou não uma tabela do sistema.

Portanto, você poderia fazer algo assim:
USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;

Resultado:
+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Opção 5 – INFORMAÇÕES_ESQUEMA.TABELAS


Esta opção consulta o INFORMATION_SCHEMA.TABLES visualização do esquema de informações. Esta visualização retorna visualizações e tabelas, então você precisa filtrar por TABLE_TYPE = 'BASE TABLE' para retornar apenas tabelas.
USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';

Resultado:
+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Se você precisar descobrir o número de tabelas do sistema, consulte 3 maneiras de contar o número de tabelas do sistema no SQL Server.