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.