SQL ROWCOUNT : Tout savoir sur les formules SQL

-
3
 m de lecture
-

Les bases de données SQL comptent généralement plusieurs centaines, voire plusieurs milliers de lignes. Mais bien souvent, les modifications, sélections, mises à jour et autres instructions ne concernent que quelques lignes. Pour savoir précisément combien de lignes ont été affectées par vos différentes opérations, il est possible d’utiliser SQL ROWCOUNT. Décryptage.

SQL ROWCOUNT pour compter les lignes

@ROWCOUNT est une requête SQL destinée à renvoyer le nombre de lignes affectées par la dernière instruction exécutée. Il peut alors s’agir de n’importe quelle instruction SQL, comme INSERT, UPDATE, DELETE, SELECT…

Pour que SQL ROWCOUNT fonctionne correctement, il faut impérativement que les deux requêtes (ROWCOUNT et l’instruction affectant les lignes) soient dans la même exécution. Si elles sont exécutées séparément, la valeur renvoyée sera 1 ; ce qui ne correspond pas au nombre de lignes affectées par l’instruction exécutée précédemment. 

L’objectif de @@ROWCOUNT est d’éviter les boucles infinies lorsqu’une base de données est analysée en boucle. Ainsi, lorsque toutes les lignes ont été traitées, le processus d’analyse s’arrête automatiquement grâce à SQL ROWCOUNT. 

Outre le traitement des données en boucle, cette requête permet aussi de vérifier le nombre de lignes affectées dans une instruction. Ce faisant, ROWCOUNT facilite la gestion des éventuelles erreurs.

5 exemples d’utilisation de SQL ROWCOUNT

SQL ROWCOUNT peut s’exécuter avec tous types d’instructions. Afin de vous aider à mieux comprendre, voici quelques exemples.

ROWCOUNT et SELECT

L’utilisation simultanée de SQL ROWCOUNT et SELECT permet d’identifier le nombre de lignes sélectionnées par la requête initiale. 

Voici comment cela se manifeste : 

SELECT TOP (100)

FROM [nom_de_table]

SELECT @@ROWCOUNT

Le nombre de lignes affectées par la requête SELECT apparaîtra alors en bas de la table. 

Il est aussi possible d’appeler @@ROWCOUNT après avoir exécuté deux commandes SELECT au cours d’une même opération. 

Par exemple : 

SELECT TOP (100)

FROM [nom_de_table_1]

SELECT top 100

FROM [nom_de_table_1] -  [nom_de_table_2]

Dans ce cas, la requête SQL ROWCOUNT ne prend en considération que la deuxième instruction.

ROWCOUNT et UPDATE

En appelant SQL ROWCOUNT après l’utilisation d’une requête UPDATE, vous pourrez identifier le nombre de lignes mises à jour au cours de cette opération.  

Voici comment cette combinaison se présente : 

UPDATE [nom_de_table]

SET [nom_de_colonne] = 'nouvelle valeur'

WHERE condition

SELECT @@ROWCOUNT

Là encore, le nombre de lignes actualisées apparaît en dessous de la table.

ROWCOUNT et DELETE

La combinaison de ROWCOUNT et DELETE permet d’identifier le nombre de lignes supprimées. 

La syntaxe est la suivante : 

DELETE [nom_de_table]

WHERE condition

SELECT @@ROWCOUNT

ROWCOUNT et INSERT

Avec la requête INSERT, la commande SQL ROWCOUNT indique le nombre de lignes ajoutées. 

Voici la syntaxe de base : 

INSERT INTO table 

VALUES ('valeur 1', 'valeur 2', ...)

SELECT @@ROWCOUNT

Il est aussi possible d’exécuter des requêtes par lot en ajoutant la commande GO. 

Par exemple : 

INSERT INTO table 

VALUES ('valeur 1', 'valeur 2', 'valeur 3')

GO 10

SELECT @@ROWCOUNT

Lorsqu’il y a plusieurs requêtes simultanées dans une même opération, SQL ROWCOUNT ne prend en compte que la dernière requête. Dans cet exemple, même si la requête INSERT est répétée 10 fois, la commande ROWCOUNT ne fera apparaître que 3 modifications, puisque c’est le nombre de valeurs modifiées par la dernière requête.

Cette règle vaut pour toutes les instructions qu’il s’agisse de INSERT. SELECT, UPDATE, DELETE, etc. 

ROWCOUNT et IF

SQL ROWCOUNT peut aussi être utilisé avec IF pour contrôler le flux de l’instruction. En fonction du nombre de lignes affectées, il sera possible d’ajouter un message spécifique. 

Par exemple : 

SELECT TOP (100)

FROM [nom_de_table]

IF @@ROWCOUNT > 10 

PRINT “message_1”

ELSE

PRINT “message_2”. 

Dans cet exemple, cela signifie : sélectionnez le top 100 de [nom_de_table]. Si le nombre de lignes est supérieur à 10, écrivez le message_1, sinon, écrivez le message_2. En l’occurrence, comme il s’agit de sélectionner un top 100, le nombre de lignes sera effectivement supérieur à 10. C’est donc le message_1 qui apparaîtra.

Rejoignez DataScientest pour maîtriser le langage SQL

SQL ROWCOUNT n’est qu’une requête parmi les nombreuses possibilités du langage SQL. Il y a aussi les mises à jour, les suppressions, les ajouts, les conditions, les déclencheurs…

Or, maîtriser ce langage figure parmi les compétences fondamentales de tout professionnel qui doit apprendre à manipuler les bases de données relationnelles avec fluidité. Pour cela, il convient de mêler théorie (pour connaître toutes les requêtes disponibles) et pratiques (pour les appliquer au cas par cas). C’est justement ce que nous proposons chez DataScientest avec nos nombreuses formations autour de la donnée. Découvrez-les !

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?