07 C01 BDD
07 C01 BDD
07 C01 BDD
En pratique, le SQL
SQL est propre aux bases de données relationnelles, les autres types
de bases de données utilisent d'autres langages pour effectuer des
requêtes.
Pour créer une base de données et effectuer des requêtes sur cette
dernière, nous allons utiliser le logiciel "DB Browser for SQLite".
Dans tous les cas, le langage de requête utilisé est le SQL (même si
parfois on peut noter quelques petites différences).
Cliquez sur Nouvelle base de données. Après avoir choisi un nom pour
votre base de données (par exemple "db_livres.db"), vous devriez avoir la
fenêtre suivante :
Pour créer une table, cliquez sur l'onglet "Exécuter le SQL". On obtient
alors :
id
titre
auteur
ann_pulbi
note
Nous avons pour chaque attribut précisé son domaine : id : entier (INT),
titre : chaîne de caractères (TEXT), auteur : chaîne de caractères,
ann_publi : entier et note : entier.
Mise en pratique
Toutes les requêtes se feront dans la fenêtre SQL 1 de l'onglet "Exécuter
le SQL"
Application 1
Après un temps plus ou moins long, vous devriez voir s'afficher ceci :
Application 2
Vérifiez que vous obtenez bien uniquement les titres et les auteurs des
livres.
Application 3
SELECT *
FROM LIVRES
à la place de :
Pour l'instant nos requêtes affichent tous les livres, il est possible
d'utiliser la clause WHERE afin d'imposer une (ou des) condition(s)
permettant de sélectionner uniquement certaines lignes.
Application 4
Vérifiez que vous obtenez bien uniquement les livres écrits par Isaac
Asimov.
Application 5
Application 6
Vérifiez que nous obtenons bien le livre écrit par Asimov publié après
1953 (comme vous l'avez sans doute remarqué, il est possible d'utiliser
les opérateurs d'inégalités).
Application 7
D'après vous, quel est le résultat de cette requête :
SELECT titre
FROM LIVRES
WHERE auteur='K.Dick' OR note>=8
Tout les livres qui sont soit écrit par K.Dick ou qui ont une note supérieur ou égal à 8
Application 8
Écrire une requête permettant d'obtenir les titres des livres publiés
après 1945 qui ont une note supérieure ou égale à 9.
Application 9
SELECT titre
FROM LIVRES
WHERE auteur='K.Dick' ORDER BY ann_publi
Application 10
SELECT titre
FROM LIVRES
WHERE auteur='K.Dick' ORDER BY ann_publi DESC
Application 11
SELECT auteur
FROM LIVRES
affiche plusieurs fois certains auteurs (les auteurs qui ont écrit
plusieurs livres présents dans la base de données).
Application 12
Application 13
Créez une nouvelle base de données que vous nommerez par exemple
db_livres_auteurs.db.
Application 14
Application 15
Application 16
Application 17
Nous avons 2 tables, grâce aux jointures nous allons pouvoir associer
ces 2 tables dans une même requête.
On pourra écrire :
Application 18
SELECT *
FROM LIVRES
INNER JOIN AUTEURS ON LIVRES.id_auteur = AUTEURS.id
Application 19
SELECT *
FROM AUTEURS
INNER JOIN LIVRES ON LIVRES.id_auteur = AUTEURS.id
Application 20
Dans le cas d'une jointure, il est tout à fait possible de
sélectionner certains attributs et pas d'autres.
Application 21
Si un même nom d'attribut est présent dans les 2 tables (par exemple ici
l'attribut id), il est nécessaire d'ajouter le nom de la table devant afin
de pouvoir les distinguer (AUTEURS.id et LIVRES.id).
Application 22
Application 23
Enfin, pour terminer avec les jointures, vous devez savoir que nous
avons abordé la jointure la plus simple (INNER JOIN). Il existe des
jointures plus complexes (CROSS JOIN, LEFT JOIN, RIGHT JOIN), ces autres
jointures ne seront pas abordées ici.
Repartons avec une base de données qui contient une seule table.
Application 24
Créez une nouvelle base de données que vous nommerez par exemple
db_livres2.db
Application 25
Application 26
Application 27
Réponse :
Application 28
Application 29
UPDATE LIVRES
SET note=7
WHERE titre = 'Hypérion'
Application 30
UPDATE LIVRES
SET note=10
WHERE auteur = 'Asimov' AND ann_publi>1950
Application 31
Application 32