Aller au contenu

SQL & BDD

Modèle Relationnel

Concernant les clés étrangères :

  • Les clés étrangères permettent de relier des tables, et ainsi, d'éviter les redondances et faciliter les modifications.

  • Une clé étrangère doit toujours être une référence valide (contrainte d'intégrité référentielle). Ainsi, pour supprimer un auteur, il faut d'abord supprimer tous les livres qui lui sont associés.

Le schéma relationnel s'écrit comme :

  • Livres(isbn: TEXT, titre: TEXT, annee: INT, #id_auteur)
  • Auteurs(id: INT, nom_complet: TEXT, annee_naissance: INT, pays: TEXT)

Les clés primaires sont soulignés et les clés étrangères sont précédées d'un #.

Requêtes SQL

Les exemples utilisent les tables Livres et Auteurs du schéma relationnel ci-dessus.

SELECT colonne, autre_colonne, ...
FROM nom_table
WHERE condition [AND/OR] autre_condition [AND/OR] ...
ORDER BY colonne [ASC/DESC];
-- titres et années des livres parus après 2000, du plus récent au plus ancien
SELECT titre, annee
FROM Livres
WHERE annee > 2000
ORDER BY annee DESC;
-- noms des auteurs français nés avant 1900
SELECT nom_complet
FROM Auteurs
WHERE pays = 'France' AND annee_naissance < 1900;

SELECT table1.colonne, table2.colonne, ...

FROM table1
JOIN table2 ON table1.id = table2.id
JOIN table3 ON table2.id = table3.id
...

WHERE condition(s)
ORDER BY colonne [ASC/DESC];
-- titre de chaque livre britannique avec le nom de son auteur
SELECT Livres.titre, Auteurs.nom_complet
FROM Livres
JOIN Auteurs ON Livres.id_auteur = Auteurs.id
WHERE Auteurs.pays = 'Royaume-Uni'
ORDER BY Livres.titre ASC;

INSERT INTO nom_table
VALUES (valeur1, valeur2, ...);
-- l'auteur doit exister AVANT d'ajouter son livre
INSERT INTO Auteurs
VALUES (12, 'Ursula K. Le Guin', 1929, 'États-Unis');

INSERT INTO Livres
VALUES ('978-2253072980', 'Les Dépossédés', 1947, 12);

UPDATE nom_table
SET colonne = valeur_ou_expression, 
    autre_colonne = valeur_ou_expression, 
    ...
WHERE condition(s);
-- corriger l'année mal saisie (1947 au lieu de 1974)
UPDATE Livres
SET annee = 1974
WHERE isbn = '978-2253072980';

DELETE FROM nom_table
WHERE condition(s);
-- les livres de l'auteur doivent être supprimés AVANT l'auteur
DELETE FROM Livres
WHERE id_auteur = 12;

DELETE FROM Auteurs
WHERE id = 12;