Cours SQL gestion des erreurs dans le code

Cours SQL gestion des erreurs dans le code, tutoriel & guide de travaux pratiques en pdf.

Les instructions DML

Présentation
Pour toutes les instructions du DML, il existe dans SQL Server un outil simple pour retrouver la syntaxe voulue rapidement (Pour des instructions simples, telle le SELECT, UPDATE…). La démarche est simple. Via le menu contextuel d’une table, sélectionnez « Générer un script de la table en tant que… ». Il nous est alors proposé de sélectionner l’action que nous voulons accomplir : SELECT, INSERT, UPDATE ou DELETE. Cette action peut aussi être réalisée sur d’autres objets SQL de la base de données.
Création, modification et suppression de données
L’instruction INSERT
L’instruction INSERT, comme son nom l’indique, va nous permettre d’ajouter une ligne de données dans une table de la base de données. Le code générique, d’ajout d’une ligne de données est la suivante :
INSERT INTO [Entreprise].[dbo].[Client]
([Nom_Client]
,[Prenom_Client]
,[Numero_Client]
,[Adresse_Client]
,[Mail_Client])
VALUES
(<Nom_Client, varchar(50),>
,<Prenom_Client, varchar(50),>
,<Numero_Client, varchar(20),>
,<Adresse_Client, varchar(50),>
,<Mail_Client, varchar(50),>)
GO
Dans ce code générique, nous demandons à SQL Server d’ajouter un enregistrement à la table Client, appartenant au schéma dbo dans la base de données Entreprise. Pour préciser les colonnes pour lesquelles nous allons ajouter des données, il est nécessaire de préciser le nom des colonnes, après l’instruction INSERT INTO. Le mot clé VALUES nous permet de fournir des valeurs aux champs. Il est impératif que les valeurs soient dans le même ordre que celui des colonnes, tout d’abord pour la cohérence des données, mais aussi pour respecter la compatibilité des données avec le type que vous avez assigné à votre table au moment de sa création. Dans le cas où certaines de vos colonnes acceptent des valeurs NULL, il existe deux méthodes pour obtenir cette valeur. La première, est d’omettre le nom de la colonne et la valeur correspondante dans l’instruction. La seconde vise à laisser la colonne dans la description, mais à préciser le mot clé NULL dans la clause VALUES. Pour des chaines de caractères, il faut placer celles-ci entre simples cotes. Dans le cas d’un champ de type identité (possédant une incrémentation automatique grâce à la contrainte IDENTITY), il n’est pas nécessaire de spécifier ni le nom du champ, ni sa valeur.
Procédons à un exemple pour mieux comprendre :
Dotnet France Association – Grégory CASANOVA / James RAVAILLE
INSERT INTO [Client]
(Nom_Client,
Prenom_Client,
Numero_Client,
Adresse_Client,
Mail_Client)
VALUES
(‘CASANOVA’,
‘Grégory’,
+33563456764,
’31 place de la chance’,
‘75554@supinfo.com’)
GO
Après avoir exécuté le code ci-dessus, le message suivant apparait, confirmant de sa bonne exécution :
Dans le cas d’une insertion multiple d’enregistrements, la syntaxe sera la même, à l’exception près qu’au lieu d’une seule série de données après le mot clé VALUES, vous en spécifier le nombre voulu. Si nous voulons ajouter deux enregistrements dans une même instruction Insert, alors la syntaxe est la suivante :
INSERT INTO [Client]
(Nom_Client,
Prenom_Client,
Numero_Client,
Adresse_Client,
Mail_Client)
VALUES
(‘CASANOVA’,
Le message suivant s’affiche, après l’exécution de cette instruction, ce qui confirme bien que l’enregistrement multiple a été exécuté sans erreur :
Dotnet France Association – Grégory CASANOVA / James RAVAILLE
Enfin, il est possible d’ajouter des enregistrements à l’aide de l’instruction SELECT, qui va copier les enregistrements d’une table (source) vers une autre table (destination). Voici un exemple :
INSERT Commande
SELECT Id_Client, GETDATE(), Id_Stock, 1
FROM Client, Stock
WHERE Id_Client = 3
AND Id_Stock = 5
Dans ce cas, nous allons ajouter dans la table commande, les informations sélectionnées. Ici, Id_Client, la date du jour grâce à la fonction GETDATE(), Id_Stock, et le chiffre 1 qui correspond à la quantité que nous voulons ajouter à la commande de notre client. Les informations concernant Id_Client et Id_Stock seront sélectionnées en fonction des conditions précisées après la clause WHERE. Grâce à ce lot, nous allons ajouter la troisième ligne présente dans le résultat présenté ci-dessous.
L’instruction UPDATE
L’instruction UPDATE, permet de mettre à jour un ou plusieurs enregistrements. La syntaxe générique de cette instruction est la suivante :
UPDATE [Entreprise].[dbo].[Client]
SET [Nom_Client] = <Nom_Client, varchar(50),>
,[Prenom_Client] = <Prenom_Client, varchar(50),>
,[Numero_Client] = <Numero_Client, varchar(20),>
,[Adresse_Client] = <Adresse_Client, varchar(50),>
,[Mail_Client] = <Mail_Client, varchar(50),>
WHERE <Conditions de recherche,,> GO
L’instruction ci-dessus permet de mettre à jour la table Client de la base de données Entreprise. La clause SET permet d’indiquer les champs à mettre à jour. La clause WHERE, sert à cibler les enregistrements à mettre à jour. Voici l’enregistrement de la table Client dont le champ Id-Client vaut 3 :
Voici une instruction SQL permettant de modifier le nom de ce client :
UPDATE [Entreprise].[dbo].[Client]
SET [Adresse_Client] = ‘18 Rue du cotton’
WHERE Id_Client = 3
GO
Après l’exécution de l’instruction ci-dessus, voici les données de l’enregistrement modifié :
Il est aussi possible d’effectuer des opérations grâce à un UPDATE. Par exemple, on peut augmenter les prix des articles d’un magasin de 10%, en multipliant le prix de tous les articles par 1,1.
L’instruction DELETE
L’instruction DELETE permet de supprimer des enregistrements. La syntaxe générique est la suivante :
DELETE FROM [Entreprise].[dbo].[Client]
WHERE <Conditions de recherche,,>
GO
L’instruction va permettre la suppression de données dans la table Client de la base de données Entreprise, dans la seule condition que les contraintes dans WHERE soient respectées. Voici une instruction permettant de supprimer l’enregistrement de la table Client dont l’identifiant est 4 :
DELETE FROM [Entreprise].[dbo].[Client]
WHERE Id_Client = 4 GO
Après avoir exécuté le code, on remarque que le client dont l’identifiant est 4, n’existe plus :
La suppression multiple de données est possible, par exemple si dans notre cas, nous avions précisé une plage d’identifiants dans notre clause
Lire et trier des données
L’instruction SELECT
L’instruction SELECT permet de sélectionner des données (tout ou partie d’enregistrements), d’une ou plusieurs tables. Elle offre aussi la possibilité de les trier, et de les regrouper. La syntaxe générale de cette instruction est la suivante :
SELECT [Id_Client]
,[Nom_Client]
,[Prenom_Client]
,[Numero_Client]
,[Adresse_Client]
,[Mail_Client]
FROM [Entreprise].[dbo].[Client]
GO
Voici une instruction SELECT permettant de lire le nom et l’adresse Email de tous les clients (si notre but avait été de sélectionner toutes les colonnes, au lieu de lister toutes celles-ci, il est possible d’indiquer que nous les sélectionnons toutes avec le simple caractère « * ») :
SELECT [Nom_Client]
,[Mail_Client]
FROM [Entreprise].[dbo].[Client]
GO
Le résultat sera le suivant :
Changer le nom des colonnes (ALIAS)
Par défaut, le nom de la colonne est celui du nom de la colonne dans la table. Il est possible d’en changer en utilisant des alias. Voici un exemple d’utilisation d’alias :
—–
–Il existe deux manières de renommer les colonnes.
–Celle-ci :
—–
SELECT ‘Nom Client’ = [Nom_Client]
,’Mail Client’ = [Mail_Client]
FROM [Entreprise].[dbo].[Client]
GO
—–
–Ou encore celle là :
—–
SELECT [Nom_Client] AS ‘Nom Client’
,[Mail_Client] AS ‘Mail Client’
FROM [Entreprise].[dbo].[Client]
GO
Le nom des colonnes est changé par un nom « plus explicite » :
La condition WHERE
Il est alors possible d’ajouter des conditions à notre recherche pour l’affiner, au travers de la clause WHERE. Les restrictions servent à limiter le nombre d’enregistrements à sélectionner. Les conditions contenues dans le WHERE sont des expressions booléennes qui peuvent être composées de noms de colonnes, de constantes, de fonctions, d’opérateurs de comparaison et d’opérateurs logiques. Prenons un exemple concret :
SELECT [Nom_Client] AS ‘Nom Client’
,[Mail_Client] AS ‘Mail Client’
FROM [Entreprise].[dbo].[Client]
WHERE Id_Client IN (1,2,3,6)
GO
Cette instruction SELECT sélectionne tous les champs de tous les enregistrements pour lesquels la colonne Id_Client est égale soit à 1, 2, 3 et 6. On remarque alors que dans notre code, nous avons utilisé la condition WHERE, une colonne, un opérateur de comparaison et un opérateur logique. Le résultat est le suivant :
L’instruction ci-dessus présente l’utilisation des clauses WHERE et BETWEEN, qui permet de lire tous les enregistrements dont l’identifiant est compris entre 1 et 10 (bornes incluses). Le résultat est le suivant :
Les projections de données
Les projections de données sont utiles dans certains cas, par exemple lorsque vous voulez lister les villes dans lesquelles sont présents vos clients. Une projection va grouper les enregistrements identiques dans un seul et même enregistrement. Voici les deux cas possibles de projection :
—–
— Deux façons de grouper les colonnes identiques :
— Celle-ci :
—–
SELECT Mesure, COUNT(Mesure) AS ‘Nombre article avec cette mesure’
FROM Stock
GROUP BY Mesure
GO
—–
— Ou celle là :
—–
SELECT DISTINCT Mesure
FROM Stock
GO
Dans le premier morceau de code, nous allons afficher une seule ligne de chaque résultat, même si plusieurs résultats existent pour la colonne Mesure, et nous comptons le nombre d’occurrence qui interviens pour chaque Mesure, grâce à la fonction associée à la clause GROUP BY. Ce genre d’instruction peu être pratique dans le cas ou l’on veut calculer le pourcentage de vente en fonction de la localisation d’un magasin par exemple. On n’affichera qu’une seule fois la localisation du magasin grâce à la clause GROUP BY, et on affichera pour chaque localisation, le nombre de vente effectuée. On peut alors facilement en déduire lequel des magasins est le plus productif. Pour revenir à notre exemple, nous pouvons déduire du résultat que nous vendons plus d’articles à l’unité, que tout le reste des articles.

1 Introduction
2 Pré-requis
2.1 Présentation
2.2 Les expressions
2.3 Les opérateurs
2.4 Les fonctions
3 Les instructions DML
3.1 Présentation
3.2 Création, modification et suppression de données
3.3 Lire et trier des données
4 Le SQL Procédural
4.1 Les variables
4.2 Les transactions
4.3 Les lots et les scripts
4.4 Le contrôle de flux
4.5 La gestion des curseurs
4.6 Les exceptions
4.6.1 Lever une exception
4.6.2 Gestion des erreurs dans le code
5 Conclusion

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *