sql >> Base de Datos >  >> RDS >> Sqlserver

5 formas de contar el número de tablas definidas por el usuario en una base de datos de SQL Server

A continuación hay cinco métodos que puede usar para determinar rápidamente cuántas tablas definidas por el usuario hay en la base de datos actual en SQL Server.

Las cinco opciones usan COUNT() función para obtener el conteo. Obviamente, puede reemplazar esto con un asterisco (* ), o los nombres de las columnas para devolver una lista de todas las tablas definidas por el usuario.

Opción 1:sys.tables

La forma más obvia de hacer esto es consultar el sys.tables vista del catálogo del sistema. El propósito de esta vista es devolver una fila para cada tabla de usuario, por lo que es exactamente lo que necesitamos.

USE WideWorldImportersDW;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.tables;

Resultado:

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

En este caso, devuelvo el número de tablas de usuario de WideWorldImportersDW base de datos.

Si cambio a otra base de datos, obtengo un resultado diferente:

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.tables;

Resultado:

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

Como se mencionó, puede enumerar las tablas simplemente reemplazando el COUNT(*) línea con un asterisco (* ) o los nombres de las columnas:

USE Music;
SELECT name
FROM sys.tables;

Resultado:

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

Opción 2:filtrar sys.objects por tipo

Otra opción es consultar el sys.objects vista de catálogo.

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE type = 'U';

Resultado:

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

En este caso, debe filtrar por type = 'U' (U es para "Tabla de usuario").

Opción 3:Filtrar sys.objects por "Tipo de descripción"

Otra forma de consultar sys.objects view es filtrar los resultados por type_desc columna.

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE type_desc = 'USER_TABLE';

Resultado:

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

Opción 4:filtrar sys.objects mediante la función OBJECTPROPERTY()

También puede usar OBJECTPROPERTY() función en su WHERE cláusula.

Esta función acepta dos argumentos:un ID de objeto y una propiedad. El ID del objeto puede ser el ID de la tabla y la propiedad puede ser IsUserTable , que determina si el objeto es o no una tabla del sistema.

Por lo tanto, podría hacer algo como esto:

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;

Resultado:

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

Opción 5:INFORMACIÓN_ESQUEMA.TABLAS

Esta opción consulta el INFORMATION_SCHEMA.TABLES vista de esquema de información. Esta vista devuelve vistas y tablas, por lo que debe filtrar por TABLE_TYPE = 'BASE TABLE' para devolver solo tablas.

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';

Resultado:

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

Si necesita averiguar la cantidad de tablas del sistema, consulte 3 formas de contar la cantidad de tablas del sistema en SQL Server.