Cours SQL manipulation de données

Cours SQL manipulation de données, tutoriel & guide de travaux pratiques en pdf.

Manipulation de données

Par manipulation de données, on entend la suppression, l’ajout et la modification de données sur la base. Ces requêtes ne sont pas spécialement compliquée. On va voir dans les chapitres qui viennent les moyens de faire ceci.
Récupération de données
Pour aller chercher des données dans la base, on va employer la requête SELECT dont voici la syntaxe :
SELECT * ou liste_colonnne_à_inclure
FROM table
[WHERE predicats]
[ORDER BY ] liste_colonne_pour_tri [ASC | DESC]
Explication de la syntaxe
• * ou liste_colonne_à_inclure : C’est en fait ce que vous cherchez. Si vous voulez toutes les colonnes de la table, vous pouvez employer * sinon, spécifier les colonnes dont vous avez besoin.
• table : Le nom de la table dans laquelle vous allez chercher
• predicats : Conditions pour la recherche. Vous pouvez spécifier des conditions pour ne pas prendre toute la table, mais seulement certains enregistrements.
• liste_colonne_pour_tri : Vous pouvez trier les enregistrements dans l’ordre que vous voulez, par colonne.
• ASC ou DESC : C’est tout simplement l’ordre de tri, ASC pour normal et DESC pour à l’envers.
Un petit exemple, vous voulez récupérer dans la table t_auteurs, tous les auteurs de langue francaise et les trier par prénom, de plus, vous voulez tous les champs sauf l’id :
SELECT nom, prénom, langue FROM t_auteurs
WHERE langue = ‘Français’
ORDER BY prenom
Jointures
Cette partie est un peu complexe que les autres, mais elle est très utile.. Les jointures vous permettront de complexifier les requêtes SELECT pour les rendre plus puissantes et pour récupérer plus d’informations qu’avec une simple requête SELECT.
Les jointures sont un moyen de mettre en relation plusieurs tables. Elles permettent d’exploiter plus à fond le modèle relationnel des bases de données. Cela permet donc de combiner des données depuis plusieurs tables. Il y a deux manières d’exploiter les jointures, soit au moyen de requêtes simples que nous avons déjà vu, soit au moyen de la clause JOIN, ce qui est conseillé.
Un simple utilisateur qui demande un listage de livres aimerait bien avoir le nom de la langue plutôt que son id qui ne lui servira à rien, ainsi avec les jointures, vous lui fournissez le livre avec le nom de la langue dans laquelle il a été écrite.
Avec le SQL de base
Nous allons apprendre à utiliser ici les jointures avec la clause WHERE, néamoins, il faut savoir que ceci est hors norme SQL2 et que son seul intêret est la compatibilité avec de vieux SGBD. C’est pourquoi, je vous conseille fortement d’utiliser la clause JOIN.
Considérons deux tables :
Débuter avec SQL par Baptiste Wicht (home)
CREATE TABLE t_langues(
langue_id INT PRIMARY KEY,
langue_nom VARCHAR(50) UNIQUE )
CREATE TABLE t_ouvrages(
ouvrage_id INT PRIMARY KEY,
ouvrage_titre VARCHAR(150) UNIQUE,
ouvrage_langue INT, )
Nous voulons récupérer une liste avec les titres des ouvrages et la langue, et tout cela en une seule requête bien sûr. On va donc utiliser une requête SELECT sur deux tables :
SELECT langue_nom, ouvrage_titre
FROM t_langues, t_ouvrages WHERE langue_id = ouvrage_langue
Il ne faut pas oublier de mettre la condition, sinon, il va renvoyer toutes les langues associées avec tous les auteurs, ce qui nous donnera un nombre de résultats égal au nombre de langues multiplié par le nombre d’ouvrages, ce qui ne sert à rien !
Avec la requête que vous venons de faire, dans le cas ou une langue n’a pas d’ouvrages y référant elle n’est pas présente dans la liste. Nous pourrons résoudre ce problème avec les JOIN.
Avec JOIN
On va reprendre l’exemple d’avant. On va donc utiliser une requête SELECT, mais avec des JOIN cette fois.
SELECT langue_nom, ouvrage_titre
FROM t_langues
INNER JOIN t_ouvrages
ON langue_id = ouvrage_langue
Concrètement, qu’est ce que fait cette requête : elle sélectionne langue_nom et ouvrage_titre, dans t_langues à laquelle elle ajoute les données de la table t_ouvrage où la langue de l’ouvrage est égale à la langue.
Cette jointure s’appelle la jointure interne.
Vous aurez remarqué que l’on n’affiche toujours pas une langue qui n’a pas d’ouvrage référent. Pour pallier à ce problème, on va employer un deuxième type de jointures : les jointures externes, qui sont très utiles justement dans le cas ou il y a des informations qui ne sont pas présentes des deux cotés.
On reprend la requête précedente avec une jointure externe :
SELECT langue_nom, ouvrage_titre
FROM t_langues
LEFT OUTER JOIN t_ouvrages
ON langue_id = ouvrage_langue
LEFT veut dire que l’on rajoute toute les lignes de la table de gauche (t_langues dans notre cas) qui n’ont pas été prises en compte par la condition de jointure. On peut aussi employer RIGHT pour rajouter les lignes de la table de droite ou FULL pour rajouter les lignes de la table de gauche et de celle de droite.
Il existe encore d’autres types de jointures :
Débuter avec SQL par Baptiste Wicht (home)
• La jointure croisée : CROSS JOIN : Ce n’est rien d’autres que l’union de toutes les données de chaque table, ça revient en fait au même que notre première jointure avec select sans condition.
• La jointure d’union : UNION JOIN : Cela permet d’unir les résultats d’une table avec une autre. En fait, cela liste les résultats d’une table, puis les autres, donc on autant de lignes que l’addition des totaux de lignes des deux tables.
Insertion
Pour ajouter un ou plusieurs nouveaux enregistrements dans la base de données, il vous faudra employer la requête
INSERT. En voici la syntaxe :
INSERT INTO table [(colonnes)]
VALUES (valeurs) | SELECT | DEFAULT VALUES
Explications sur la syntaxe
• table : le nom de la table cible
• colonnes : les colonnes dans lesquelles on veut insérer quelque chose ou rien si on veut insérer quelque chose dans toute les colonnes
• valeurs : Les valeurs pour chaque colonne
• SELECT : On peut aussi insérer le résultat d’une requête select dans notre table
• DEFAULT VALUES : On va entrer un nouvel enregistrement qui contiendra pour chaque colonne la valeur par défaut de celle-ci.
Exemple : Si on veut insérer une nouvelle personne dans la table personne, on procédera ainsi :
INSERT INTO personnes (nom, prenom)
VALUES (« Wicht », « Baptiste »)
Ou alors, si on veut insérer une personne avec les valeurs par défaut :
INSERT INTO personnes
DEFAULT VALUES
Maintenant, un exemple un peu plus complexe en utilisant la clause SELECT. On veut rajouter tous les auteurs dans la table t_personnes :
INSERT INTO t_personnes (nom, prenom, age)
SELECT nom, prenom, age FROM t_auteurs
Suppression
Pour supprimmer un ou plusieurs enregistrements d’une table, il suffit d’employer la requête DELETE :
DELETE FROM table
[WHERE predicat]
Explications sur la syntaxe
• table : La table dans laquelle on veut faire la suppression
• predicat : La condition qui va définir quelles lignes nous allons supprimer
Par exemple, si on veut supprimer tous les auteurs :
Débuter avec SQL par Baptiste Wicht (home)
DELETE FROM t_auteurs
Ou alors tous les livres de plus de 1500 pages
DELETE FROM t_livres
WHERE pages > 1500
Modification
Pour modifier un ou plusieurs enregistrements existants, c’est la requête UPDATE qui va entrer en jeu :
UPDATE table
SET colonne1 = valeur1 [, colonne2 = valeur2 …]
[WHERE predicat]
Explications sur la syntaxe
• table : La table dans laquelle on va faire les modifications
• colonne : la colonne dont on va modifier la valeur
• valeur : La nouvelle valeur
• predicat : La condition pour sélectionner les lignes que nous allons modifier
Par exemple, si on veut que toutes les personnes aient 18 ans, on fera :
UPDATE t_personnes
SET age = 18
Ou encore, si on veut que toutes les personnes de plus de 18 ans s’appellent Baptiste Wicht, on procédera ainsi :
UPDATE t_personnes
SET nom = ‘Wicht’ , prenom = ‘Baptiste’
WHERE age > 18
Débuter avec SQL par Baptiste Wicht (home)
Conclusion
Toutes les requêtes sont très pratiques et assez simple à utiliser (sauf peut-être les jointures). On peut bien sûr aller encore plus loin avec SQL, mais je ne traiterai pas de ça ici. Si vous voulez (ou avez besoin) de plus d’informations sur les autres possibilités SQL, je ne peut que vous conseiller de lire le tutoriel proposé plus bas, il passe en revue toutes les possibilités offertes par SQL.

I – Introduction
II – Création des tables
II-A – Clefs primaires et unicité
II-B – Contraintes de type
II-C – Possibilité de laisser blanc
II-D – Contraintes de validation
II-E – Contraintes d’intégrité référentielle
III – Manipulation de données
III-A – Récupération de données
III-B – Jointures
III-B-1 – Avec le SQL de base
III-B-2 – Avec JOIN
III-C – Insertion
III-D – Suppression
III-E – Modification
IV – 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 *