Coding Club des filles

Défis supplémentaires

NOT un sondage normal

Le ministère a besoin de toi. Pour un sondage, il faudrait recenser toutes les créatures à poils ou à plumes. En d’autres termes, il faut trouver les créatures où la colonne poils_créature n’est pas " ? ".

Pour filtrer quelque chose qu'on ne veut pas, on peut utiliser la négation: NOT ("pas" en français) avant la condition.

Conseil de pros

Au lieu de cliquer sur Run, tu peux taper sur [Shift⇧]+[Enter↵] sur ton clavier pour exécuter ta commande.

I LIKE SQL

Tu as surement remarqué qu’il faut être très précise lorsque l’on cherche des données spécifiques avec le signe = (par exemple, ... WHERE nom = "Minerva McGonagall" AND ...). Mais si on ne connait qu’une partie d’une information on peut utiliser LIKE. Cela permet de chercher les textes qui sont à peu près corrects.

On peut créer une condition en remplaçant = par LIKE et en plaçant le texte que l'on veut chercher entre "%...%"

Les bases de données relationelles

Le vrai avantage d’utiliser une base de données telle que celle que nous avons utilisé jusqu’à présent est que tu peux lier ces tableaux entre eux ! Rappelle-toi du schéma que nous avons vu précédement:

On pourrait par exemple, vouloir voir le nom de tous les magiciens qui ont un patronus qui est une créature imaginaire. Toutefois, l’attribut statut_créature ne se trouve pas dans le même tableau que celui des noms des magiciens. La requête suivante ne peut donc pas fonctionner.

SELECT nom FROM personnages WHERE statut_créature='Créature imaginaire'

L’attribut type_créature se trouve dans le tableau créatures. Il faut donc lier ou joindre les deux tableaux grâce à la commande JOIN. Par exemple: Harry Potter a un Patronus “Cerf” et on aimerait que toutes les informations du Cerf soient ajoutées au tableau personnages. Pour cela on doit écrire quelque chose comme:

Sélectionne tous les attributs de personnages en joignant le tableau créatures tel que le patronus du personnage corresponde au nom de la créature

En simplifiant on obtient:

SELECTIONNE * DE personnages JOINDRE créatures TEL QUE personnages.patronus=créatures.nom_créature

En anglais on traduit:

SELECT * FROM personnages JOIN créatures ON personnages.patronus=créatures.nom_créature

Tu peux maintenant essayer par toi-même.