Requêtes de métadonnées utiles SQL Server

Les requêtes de métadonnées sont vraiment utiles pour découvrir des informations pour un schéma de base de données donné. Les informations de base de données, notamment les tables, les vues, les noms de colonnes, les types de données, les index et les contraintes de table, sont toutes disponibles à l'aide de requêtes telles que celles-ci.

Au cours de ce tutoriel, je souhaite explorer quelques requêtes de métadonnées utiles.

Commençons par trouver la liste des tables créées dans la base de données donnée.

select * from information_schema.tables où table_type = "table de base";


Maintenant, listons les vues créées dans la base de données donnée.

select * from information_schema.tables où table_type = "view";


Créons une requête qui répertorie les noms de colonne, les types de données, si la colonne autorise la valeur null ou non, ainsi que le nombre maximum de caractères autorisés dans la ligne.

sélectionnez nom_colonne, type_données, is_nullable, longueur_magime_ caractères à partir de informations_schema.columns où nom_table = 'emp';


Cette requête affiche le nom de la table, l'ID d'objet, la date de création de la table et la dernière heure de modification de la table.

sélectionnez nom, object_id, create_date, modify_date à partir de sys.tables;


Il est souvent nécessaire de répertorier les index créés pour une table avec les noms de colonnes. Dans cette requête, a.name est le nom de la table pour laquelle vous répertoriez les index. En supprimant la condition a.name, vous pouvez voir tous les index créés dans votre base de données.

SELECT nom.nom_table, nom_biz, nom_nom, nom_colonne FROM sys.tables a, sys.indexes b, sys.index_columns c, sys.columns d WHERE a.object_id = b.object_id et 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';

Cette requête listera les contraintes définies sur les tables avec les noms de colonnes. Dans cet exemple, nous pouvons voir les contraintes uniques, primaires ou étrangères de la table emp.

SELECT nom_table, nom_constraint, b.nom_colonne, type_constraint FROM information_schema.table_constraints a, information_schema.key_column_usage b WHERE a.table_name = 'EMP' ET a.table_name = b.table_name AND a.table_schema = b. AND a.constraint_name = b.constraint_name;

Supposons que vous vouliez écrire un 'select count (1) from nom_table' requête pour chaque table dans votre base de données, mais vous avez plus de 100 tables dans votre base de données. Au lieu d'écrire une requête distincte pour chaque table, vous pouvez générer ces requêtes à l'aide de SQL. Par conséquent, vous pouvez écrire du code SQL pour générer du SQL.

SELECT 'select count (1) from [' + nom_table + '];' FROM information_schema.tables;