Dans cet article, je vais vous expliquer quelques requêtes générales. Je pense que chaque développeur devrait avoir connaissance de ces requêtes. Ces requêtes ne sont pas liées à un sujet spécifique de SQL. Mais la connaissance de telles requêtes peut résoudre certaines tâches complexes et peut être utilisé dans de nombreux scénarios, alors j’ai décidé d’écrire un article sur ces requêtes.
Requête 1 – Split une chaîne de caractère séparée par des virgules
Supposant qu’on a une chaîne de caractère qui contient une liste des pays séparée par des virgules Ex: ‘France, USA, Maroc, Japon’ et qu’on veut avoir cette liste par ligne.
Voici la requête qui permet d’avoir ça :
CREATE TABLE #Country ( CountryName VARCHAR(80) ) INSERT #Country VALUES ('France, USA, Maroc, Japon') SELECT LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS CountryName FROM ( SELECT CAST('<XMLRoot><RowData>' + REPLACE(CountryName,',','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS x FROM #Country )t CROSS APPLY x.nodes('/XMLRoot/RowData')m(n)
Résultat :
Requête 2 – Derniers Scripts exécutés
Pour avoir la liste des derniers scripts exécutés sur une base de données, voilà la requête :
SELECT execquery.last_execution_time AS [Date Time] ,execsql.TEXT AS [Script] FROM sys.dm_exec_query_stats AS execquery CROSS APPLY sys.dm_exec_sql_text(execquery.sql_handle) AS execsql ORDER BY execquery.last_execution_time DESC
Résultat :
Requête 3 – Liste des tables avec nombre d’enregistrements
CREATE TABLE #Tab ( Table_Name [varchar](max), Total_Records int ); EXEC sp_MSForEachTable @command1=' Insert Into #Tab(Table_Name, Total_Records) SELECT ''?'', COUNT(*) FROM ?' SELECT * FROM #Tab t ORDER BY t.Total_Records DESC; DROP TABLE #Tab;
Résultat :
Requête 4 – Liste des procédures stockées modifiées dans les N derniers jours
SELECT name,modify_date FROM sys.objects WHERE type='P' AND DATEDIFF(D,modify_date,GETDATE())< 100
Résultat :
Requête 5 – Obtenir toutes les tables qui n’ont pas de clé primaire
SELECT name AS Table_Name FROM sys.tables WHERE OBJECTPROPERTY(OBJECT_ID,'TableHasPrimaryKey') = 0 ORDER BY Table_Name;
Résultat :
Requête 6 – Obtenir des informations sur les colonnes des tables
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME='FactFacture'
Résultat :
Requête 7 – Afficher le contenu d’une procédure stockée
exec sp_helptext @objname = 'getScoringPerfPCID' /*Prod stock Name*/
Résultat :
Requête 8 – Liste des procédures stockées associées à une table
SELECT DISTINCT o.name, o.xtype FROM syscomments c INNER JOIN sysobjects o ON c.id=o.id WHERE c.TEXT LIKE '%FactPricingOverview%' /*Table Name*/ AND o.xtype='P'
Résultat :
Requête 9 – Liste des clés primaires et des clés étrangères d’une base de donnée
SELECT DISTINCT Constraint_Name AS [Constraint], Table_Schema AS [Schema], Table_Name AS [TableName] FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE GO
Résultat :
Requête 10 – Désactiver toutes les contraintes d’une table
ALTER TABLE Table_Name NOCHECK CONSTRAINT ALL
Leave a comment