Consultas de metadatos útiles de SQL Server

Las consultas de metadatos son realmente útiles para descubrir información para un esquema de base de datos determinado. La información de la base de datos, incluidas las tablas, las vistas, los nombres de las columnas, los tipos de datos, los índices y las restricciones de las tablas, están disponibles mediante consultas como estas.

Durante este tutorial, quiero explorar algunas consultas de metadatos útiles.

Comencemos por encontrar la lista de tablas creadas en la base de datos dada.

seleccione * desde information_schema.tables donde table_type = "base table";


Ahora vamos a enumerar las vistas creadas en la base de datos dada.

seleccione * desde information_schema.tables donde table_type = "view";


Permítanos crear una consulta que enumere los nombres de columna, los tipos de datos, si la columna permite nulos o no, y el máximo de caracteres permitidos en la fila.

seleccione column_name, data_type, is_nullable, character_maximum_length desde information_schema.columns donde table_name = 'emp';


Esta consulta muestra el nombre de la tabla, la identificación del objeto, la fecha de creación de la tabla y la última hora de modificación de la tabla.

seleccione nombre, object_id, create_date, modify_date desde sys.tables;


Con frecuencia se requiere listar los índices creados para una tabla con los nombres de columna. En esta consulta a.name es el nombre de la tabla para la que está enumerando los índices. Al eliminar la condición a.name, puede ver todos los índices creados en su base de datos.

SELECCIONE a.name table_name, b.name index_name, d.name column_name FROM sys.tables a, sys.indexes b, sys.index_columns c, sys.columns d DÓNDE a.object_id = b.object_id AND b.object_id = c. object_id AND b.index_id = c.index_id AND c.object_id = d.object_id AND c.column_id = d.column_id AND a.name = 'emp';

Esta consulta listará las restricciones definidas en las tablas con los nombres de columna. En este ejemplo, podemos ver las restricciones de clave única, primaria o externa de la tabla emp.

SELECCIONE a.table_name, a.constraint_name, b.column_name, a.constraint_type FROM information_schema.table_constraints a, information_schema.key_column_usage b DÓNDE a.table_name = 'EMP' AND a.table_name = b.table_name AND a.table_schema = b. AND a.constraint_name = b.constraint_name;

Supongamos que quieres escribir un 'seleccione count (1) from table_name' Consulte cada tabla en su base de datos, pero tiene más de 100 tablas en su base de datos. En lugar de escribir una consulta separada para cada tabla, puede generar esas consultas usando SQL. Por lo tanto, puede escribir código SQL para generar SQL.

SELECCIONE 'seleccione conteo (1) de [' + table_name + '];' DESDE information_schema.tables;