Traitement de données Commandes SQL Introduction Structured Query Language (SQL) est un langage permettant l'accès aux bases de données relationnelles. Il est vrai qu'il existe un grand nombre de bases de données plus ou moins différentes : SQL Server, Oracle, Access... Chaque base de données possède plus ou moins sont propre langage SQL avec ses spécificités. Cependant, un certain nombre d'instructions se retrouvent de manière systématique. Le but de ce document, n'est pas de faire un tour complet de toutes les constructions SQL existantes, mais plutôt de présenter les commandes les plus couramment utilisées. Parmi elles, nous retrouvons notamment les commandes SELECT, INSERT, UPDATE et DELETE. Nous allons les regarder rapidement une par une. Mais avant cela, introduisons quelques mots de terminologie. Quelques mots de terminologie Une base de données relationnelle est principalement constituée de tables. Dans une certaine mesure, on peut dire qu'une table contient de éléments d'une nature (d'un type) bien déterminée : par exemple, des personnes. Dans une table, on retrouve plusieurs éléments de même type (comme dit précédemment) : ces éléments sont appelés enregistrements (Record en anglais). Chaque enregistrement correspond en fait à une ligne de la table, et donc chaque enregistrement est une donnée composée. Chaque partie constitutive d'un enregistrement est appelée un champ (Field en anglais). La capture d'écran suivante montre un exemple de table : elle contient des informations décrivant des utilisateurs d'un système informatique. Deux tables peuvent être liées l'une à l'autre au niveau de la base de données. Ces liaisons sont appelées relations (d'ou le terme de base de données relationnelle). Il existe plusieurs types de relations et elles permettent de garantir l'intégrité des données contenues dans la base. Parmi ces relations, on trouve la relation d'intégrité référentielle. La capture d'écran suivante visualise une relation de ce type via un trait reliant les deux tables. Ainsi, dans cette base, il est inconcevable que l'on trouve une action qui ne soit pas rattachée à un utilisateur. #Niedercorn LT « la Briquerie » 57100 THIONVILLE Programmation : SQL & page 1/3 Sélection d'un ensemble d'enregistrement Pour extraire des données de la base, il vous faut utiliser l'ordre SQL SELECT. Il permet de générer une requête plus ou moins complexe, en fonction de ce que vous souhaitez récupérer. Voici quelques exemples de requête SQL de sélection. -- Renvoie toutes les lignes de la table T_Users SELECT * FROM T_Users; -- Renvoie tous les enregistrements de la table, triés par nombre de connexion SELECT * FROM T_Users ORDER BY ConnectionNumber; -- Renvoie le mot de passe de l'utilisateur Skywalker SELECT Password FROM T_Users WHERE Login='Skywalker'; -- Etablie une jointure entre les deux tables considérées. SELECT Login, Password, ConnectionNumber, DateOfAction, Description FROM T_Users INNER JOIN T_Actions ON T_Users.Id = T_Actions.IdUser WHERE (T_Actions.IdUser = 3) Revenons juste sur le dernier exemple : cette requête SQL lie des données présentent dans le deux tables. En effet, la table d'actions associe chaque action à un utilisateur par l'intermédiaire de l'identificateur d'utilisateur (n'oubliez pas la contrainte d'intégrité référentielle). Ce type de lien s'appelle une jointure. De plus, dans cet exemple, seules les actions pour l'utilisateur d'indice 3 nous intéresse. Insertion d'enregistrements Une autre commande SQL permet, elle, non pas de récupérer de données dans la table, mais d'en ajouter. Il s'agit de la commande INSERT. L'exemple suivant insert un nouvel enregistrement dans la table. Attention, L'identificateur id est définit pour s'affecter automatiquement lors de l'insertion d'un nouvel enregistrement. -- Insert un nouvel utilisateur dans la table INSERT INTO T_Users (Login, Password, ConnectionNumber) VALUES ('liard', 'dominique', 0); Modification d'enregistrements La commande UPDATE permet de mettre à jour des enregistrements déjà existant. Pour que cela fonctionne, il faut sélectionner les valeurs à mettre à jour et fixer les nouvelles valeurs. Vous pouvez changer les valeurs de plusieurs champs de l'enregistrement. -- Incrémente le nombre de connexions pour l'utilisateur Plisken. UPDATE T_Users SET ConnectionNumber=ConnectionNumber+1 WHERE Login='Plisken'; #Niedercorn LT « la Briquerie » 57100 THIONVILLE Programmation : SQL & page 2/3 Suppression d'enregistrements Pour finir cette présentation des ordres SQL usuels, parlons de la commande DELETE. Elle permet de supprimer des enregistrements d'une table. Si vous ne précisez rien, tous les enregistrements seront supprimés. Sinon, il faut sélectionner, via le WHERE, quels sont les enregistrements à supprimer. -- Supprime toutes les lignes de la table DELETE FROM T_Users; -- Supprime toutes les lignes qui ont, pour valeur de login, 'liard' DELETE FROM T_Users WHERE Login='liard'; Conclusion Au terme de cette petite présentation, nous avons donc vu les quatre commandes SQL classiques. Vous pouvez, dans une table, sélectionner des données, pour les exploiter dans vos programmes. Vous pouvez aussi insérer de nouveaux enregistrements, modifier des enregistrements existants ou en supprimer. Mais nous sommes loin d'avoir fait un tour exhaustif du langage SQL, d'autant plus que chaque type de bases de données relationnelles enrichie le langage avec ses propres constructions. Pour de plus amples informations, reportez-vous à la documentation de votre base de données. #Niedercorn LT « la Briquerie » 57100 THIONVILLE Programmation : SQL & page 3/3